我想输出一个表单按钮:
<% content_tag :button :type => :submit, :class => :positive do %>
<%= image_tag "icons/tick.png"%>
Save
<% end %>
应该生成:
<button type="submit" class="positive">
<img src="/images/icons/tick.png" alt=""/>
Save
</button>
我在整个网站上都有这个,它变得凌乱,我刚刚得知Rails有帮助方法。我很好奇。是否有可能构建一个辅助方法,所以我可以在rails
中说出类似的内容<%= form_button(submit) %>
你怎么看?它会存在于application_helper.rb文件中吗?
类似的东西:
def form_button (type)
if type == 'submit'
<% content_tag :button :type => :submit, :class => :positive do %>
<%= image_tag "icons/tick.png"%>
Save
<% end %>
end
end
答案 0 :(得分:2)
回答你的第一个问题:是的,这是可能的,这就是Rails框架所鼓励的:重用代码(也称为DRY原则)。特定于查看逻辑,每个模型都有一个帮助器。这是默认/惯例,但不是 要遵守的。我将在下一段中详细解释这一点。是的,将您的form_button
方法放入 帮助程序 - 不一定是application_helper.rb
。
回答你的第二个问题:你可以把它贴在application_helper.rb
中,但没有什么能阻止你让事情变得更合乎逻辑(即创建一个buttons_helper.rb
)。特别是在Rails 3中,每个视图都可以使用所有帮助程序(尽管这会使一些羽毛褶皱)。所以你可以做的是为自己创建一个新的帮助器(即rails g helper Buttons
),专门用于创建按钮,并将逻辑放在那里。
看看这个Railscast。它更准确地描述了我上面所说的内容。我有同样的问题,发现它非常有帮助。 http://railscasts.com/episodes/101-refactoring-out-helper-object
答案 1 :(得分:0)
如果帮助者将在整个网站周围,那么应用程序可能是将其用于帮助者的最佳位置。
你可以做你拥有的,你不需要放置<%%>
标签,因为那些是erb
嵌入式Ruby,它们是你的视图扩展,助手只是.rb
所以没有必要。
我检查了API,看起来你不需要为此自己担任角色:
content_tag(:p, "Hello world!")
# => <p>Hello world!</p>
content_tag(:div, content_tag(:p, "Hello world!"), :class => "strong")
# => <div class="strong"><p>Hello world!</p></div>
content_tag("select", options, :multiple => true)
# => <select multiple="multiple">...options...</select>
更好的方法是将图像作为背景图像应用于样式表或以内联方式执行。你不需要为此做一个帮助,BTW如果类型不是'submit'会发生什么?您是否有其他输入要检查或默认?如果没有,将它包装在帮助器中是没有意义的。
所以你可以这样做“
<% submit_tag "Save", :class => "your_class", :style => "font-size:10px;"%>
或
<% f.submit "Save", :class => "your_class", :style => "font-size:10px;"%>