我在Rails中有一个表单,我需要在HTML中创建一个选项标签。这是一个非常简单的带有静态值的选项列表。我可以用HTML轻松创建它,但我想用“Rails Way”
来做以下是我表格的一部分:
<div class="field">
<%= f.label :first_name %><br />
<%= f.text_field :first_name %>
</div>
<div class="field">
<%= f.label :last_name %><br />
<%= f.text_field :last_name %>
</div>
<div class="field">
<%= f.label :email %><br />
<%= f.text_field :email %>
</div>
<div class="field">
<%= f.label :phone %><br />
<%= f.text_field :phone %>
</div>
<div class="field">
<%= f.label :area %><br />
<%= select_tag "area", options_for_select([["Northeast", "NE"], ["Southeast", "SE"], ["Central", "CE"], ["West", "WE"], ]) %>
</div>
<div class="actions">
<%= f.submit %>
</div>
当我使用select_tag时,我的表单显示它已成功发布更改,但select_tag传递的值未更新到数据库。我已经验证了一个简单的文本字段是否传递了值。
我确信我错过了一些非常简单的事情,但我很难确定它。请帮忙。谢谢!
Rails Newbie
答案 0 :(得分:1)
检查您的呈现:裸select_tag
将呈现"area"
作为名称/ ID,而表单中的其他内容将具有基于模型的正常名称。
例如,如果模型为"user"
,则电话字段的名称为"user[phone]"
。
您可以通过查看传递给日志中的操作的参数来看到这种情况。
使用表单助手,或者将其命名与其他字段相同。
另请参阅:select,select_tag,select(无用)和form helpers。 "Understanding Parameter Naming Conventions"部分也可能很有用。
答案 1 :(得分:0)
select_tag
与text_field_tag
类似:它不与表单构建器(对象form_for
产生)合作,以获取正确的参数名称和当前值。
select
助手与select_tag
略有不同,因为它为您调用了select选项,因此您只需要编写
f.select 'area', [["Notheast", "NE"], ...]