gpt4 book ai didi

ruby-on-rails - 如何为 form_for 助手实现按钮标签?

转载 作者:行者123 更新时间:2023-12-01 23:04:29 24 4
gpt4 key购买 nike

我需要实现一个创建 <button>...</button> 的助手标签,我需要做一些类似的事情:

<%= form_for(some_var) do |f| %>
<%= f.submit '+' %>
<% end %>

助手应该像这样工作:
<%= f.button '+' %>
# Returns
<button type="submit">+</button>

我看到了 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

现在您有两种使用构建器的方法。

1. 鸭子干

每次构建使用按钮的表单时,都需要指定构建器...
<%= form_for @duck, :builder => BootstrapFormBuilder do |form|%>

2. 开发者的 DRY

添加以下内容
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

调用魔术师...
<%= bootstrap_form_for @person do |form| %>
<%= form.button 'Click Me' %>
<% end %>

关于ruby-on-rails - 如何为 form_for 助手实现按钮标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6214548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com