我在使用formtastic gem
的Rails 3.2应用程序中有部分内容<%= f.semantic_fields_for :bucket do |bucket| %>
<%= bucket.inputs do %>
<%= bucket.input :bucket_name, :collection => @buckets,
:include_blank => false %>
<%= bucket.input :sub_directory, :collection =>
@buckets.first.paths,
:include_blank => false %>
<% end %>
<% end %>
现在在我的控制器中我可以得到:bucket_name,值为== 到一个整数,在我的情况下,我的集合中只有一个项目,但它给我的值为2.我的猜测是这是对象的ID值。
重要的是我得到对象的实际:name字符串值 在集合中选择的。我不知道该怎么做。所以 假设我选择的项目标签为“我的标签”,它是第3个 集合中的项目。我如何获取“我的标签”值。
答案 0 :(得分:0)
默认情况下,选择输入将使用模型的id
属性作为value
标记的<option>
属性,并且它会在对象上绑定各种方法以获取内容。选项标记,例如to_label
,name
和to_s
。
您可以分别使用:member_value
和:member_label
选项进行更改(旧版本中称为:value_method
和:label_method
。
每个选项的详细信息都在选择输入的文档中,我假设您没有看过:)
http://rdoc.info/github/justinfrench/formtastic/Formtastic/Inputs/SelectInput
答案 1 :(得分:0)
:member_value和:member_label已从Formtastic的v3开始弃用。
最简单的方法是修改传入输入的集合。请参阅formtastic github page
中的示例 f.input :author, :as => :select, :collection => Author.pluck(:first_name, :id)
这里first_name是标签,id是选择选项的值