dec*_*cay 3 forms ruby-on-rails helper ruby-on-rails-3
我需要实现一个创建<button>...</button>
标记的帮助器,我需要做一些类似的事情:
<%= form_for(some_var) do |f| %>
<%= f.submit '+' %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
帮助器应该像这样工作:
<%= f.button '+' %>
# Returns
<button type="submit">+</button>
Run Code Online (Sandbox Code Playgroud)
我看到了https://github.com/rails/rails/blob/master/actionpack/lib/action_view/helpers/form_tag_helper.rb#L458,但这在Rails 3.0.7中没有实现.
我需要做什么才能在我的应用程序中实现这个帮助器?
您可以创建一个自定义表单助手,它继承自FormBuilder,以便在创建表单时使用.我创建了这个按钮方法,用于Twitter的Bootstrap.
用任何适合的方式替换'Bootstrap'.(也许CuteAsAButtonBuilder?)
app/helpers/bootstrap_form_builder.rb
class BootstrapFormBuilder < ActionView::Helpers::FormBuilder
def button(label, options={})
# You can also set default options, like a class
default_class = options[:class] || 'btn'
@template.button_tag(label.to_s.humanize, :class => default_class)
end
end
Run Code Online (Sandbox Code Playgroud)
现在您有两种方法可以使用构建器.
每次构建使用该按钮的表单时,都需要指定构建器...
<%= form_for @duck, :builder => BootstrapFormBuilder do |form|%>
Run Code Online (Sandbox Code Playgroud)
添加以下内容
app/helpers/application_helper.rb
module ApplicationHelper
def bootstrap_form_for(name, *args, &block)
options = args.extract_options!
form_for(name, *(args << options.merge(:builder => BootstrapFormBuilder)), &block)
end
end
Run Code Online (Sandbox Code Playgroud)
只需打电话给魔术师......
<%= bootstrap_form_for @person do |form| %>
<%= form.button 'Click Me' %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10936 次 |
最近记录: |