如何从formtastic中的:select框中获取标签字符串值

时间:2012-02-19 22:32:00

标签: ruby-on-rails-3 formtastic

我在使用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个 集合中的项目。我如何获取“我的标签”值。

2 个答案:

答案 0 :(得分:0)

默认情况下,选择输入将使用模型的id属性作为value标记的<option>属性,并且它会在对象上绑定各种方法以获取内容。选项标记,例如to_labelnameto_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是选择选项的值