我有使用simpleform范式。 现在,我想补充一点,没有模型中的任何相应的字段输入,它会通过控制器进行处理。 我试过了
<%= simple_form_for @obj do |f| %>
<%= f.input :name %>
<%= f.input :attr, as: :string %> <-- should just send "attr" as post data
<% end %>
但是这给人一种Method not found: attr_not_in_obj
错误。 我能明显使用标准导轨佣工,但我会想念各地输入的simpleform HTML,并复制并不十分似乎是正确。
总之:我正在寻找类似的轨道标记助手simpleform版本,但没有一个模型的任何连接。 如何添加不符合模型属性的投入?
你为什么不加入:
attr_accessor :attr
你的模型类的定义? 这样,你的代码:
<%= f.input :attr %>
应该管用。
要么
如果此解决方案是不适合的,你总是可以通过一些价值,您input
直接方法:
<%= f.input :attr, input_html: {value: 'something'} %>
假设你想用一个导轨形式助手,但仍然把它包在SimpleForm善良? 您可以通过调用输入,象这样一个块:
<%= simple_form_for @obj do |f| %>
<%= f.input :name %>
<%= f.input :attr do %>
<%= text_field_tag 'attr' %>
<% end %>
<% end %>
是的,下面是从报价simple_form维基
字符串输入
app/inputs/fake_input.rb:
class FakeInput < SimpleForm::Inputs::StringInput
# This method only create a basic input without reading any value from object
def input(wrapper_options = nil)
merged_input_options = merge_wrapper_options(input_html_options, wrapper_options)
template.text_field_tag(attribute_name, nil, merged_input_options)
end
end
然后,你可以做<%= f.input :thing, as: :fake %>