我正在尝试构建一些单元测试来测试我的Rails助手,但我永远不会记得如何访问它们.烦人.建议?
有没有人知道Rails Helper可以自动将相应的文章添加到给定的字符串中?例如,如果我将"apple"传递给该函数,它将变成"一个苹果",而如果我要发送"香蕉"它将返回"香蕉"
我已经检查了Rails TextHelper模块但找不到任何东西.如果这是重复的道歉,但无可否认,这是一个难以找到的答案......
如果我想currentUser()为一些oauth的东西做一个函数我正在做的我可以在视图或控制器中使用它(想想rails,你helper_method: current_user在应用程序控制器中做的事情).
我读到的所有内容都声明要创建一个帮助文件夹并在那里添加函数然后你可以这样做Helpers::functionName这是否是正确的方法呢?
什么是创建辅助功能的"laravel方式",可以在刀片模板和控制器中使用?
是否可以从控制器调用辅助方法?如果是,如何在Rails 3中执行此操作?
我正在尝试为我的管理链接创建一个帮助方法.在很多视图中我都有代码
<% if current_user %>
<%= link_to "Edit", edit_model_path(model) %>
<%= link_to "New", new_model_path %>
<%= link_to "Delete", model, :confirm => "You're a Noob", :method
=> :delete %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
仅在登录时显示这些内容.
我想在他们的位置做这样的事情
<%= admin_links(model) %>
Run Code Online (Sandbox Code Playgroud)
并将当前项传递给应用程序帮助程序方法
def admin_links(m)
if current_user
a = "#{link_to "edit" edit_m_path(m)}"
a << "#{link_to "new" new_m_path}"
a << "#{link_to "Delete", m, :confirm => "Your a Noob", :method
=> :delete}"
end
end
Run Code Online (Sandbox Code Playgroud)
或类似的东西.
我发现了一些文章解决了引擎内的助手问题,这些问题不适用于消费(父)应用程序.为了确保我们都在同一页上,让我们说我们有这个:
module MyEngine
module ImportantHelper
def some_important_helper
...do something important...
end
end
end
Run Code Online (Sandbox Code Playgroud)
如果您查看"隔离引擎的助手"(L293)中的rails引擎文档,它会说:
# Sometimes you may want to isolate engine, but use helpers that are defined for it.
# If you want to share just a few specific helpers you can add them to application's
# helpers in ApplicationController:
#
# class ApplicationController < ActionController::Base
# helper MyEngine::SharedEngineHelper
# end
#
# If you want to include all of the engine's helpers, you can use #helpers …Run Code Online (Sandbox Code Playgroud) ruby-on-rails view-helpers helpers rails-engines ruby-on-rails-3.1
有没有办法可以创建一个自定义表单助手,而不是:
special_field_tag :object, :method
Run Code Online (Sandbox Code Playgroud)
我可以实现以下目标:
form.special_field :method
Run Code Online (Sandbox Code Playgroud) 我发现自己重复输入我定义的许多strftime.
看过Ryan Bates的railscasts ep 32/33(我想),我在Time.now.to_s中为to_s方法创建了一个自定义选项,这样我就可以做Time.now.to_s(:sw),其中:sw是我的自定义方法,例如,检索"2010年9月23日,下午5:00".
但问题是,我不知道把#sw的定义放在哪里.它应该在初始化文件夹中的文件中吗?或者它应该进入application.rb?
谢谢!
我想使用rails熟悉的助手,但功能略有改变.我看待它的方式,我希望能够做到这样的事情:
module AwesomeHelper
#... create alias of stylesheet_link_tag to old_stylesheet_link_tag
def stylesheet_link_tag(*args)
if @be_awesome
awesome_stylesheet_link_tag *args
else
old_stylesheet_link_tag *args
end
end
end
Run Code Online (Sandbox Code Playgroud)
我看到它的方式,我有三个选择:
所以这里的问题是,我是否坚持使用其中一种次优解决方案,还是有其他方式我没有考虑过?如果我选择选项3,有没有办法在不直接寻址rails helper模块的情况下执行此操作?
(注意:我删除了上下文,因为它没有添加任何问题.)
我为我的模板写了一个简单的帮手.这是代码:
Handlebars.registerHelper('splitQuote', function (string) {
if (string.indexOf('|') !== -1) {
return string.replace('|', '<span>') + '</span>';
}
return string;
});
Run Code Online (Sandbox Code Playgroud)
所以我传递一个字符串,然后用"|"分割字符串 字符.我还想把第二部分放入span标签.
问题是,返回的结果是纯文本,所以我得到了像文本而不是HTML的span标签.
有谁知道捕获的是什么?
TNX
helpers ×10
ruby ×4
blade ×1
controller ×1
controllers ×1
dynamic ×1
forms ×1
javascript ×1
laravel-5 ×1
overriding ×1
path ×1
php ×1
view-helpers ×1