似乎无法使用select_tag传递变量

时间:2011-12-23 13:28:38

标签: ruby-on-rails html-select

我在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

2 个答案:

答案 0 :(得分:1)

检查您的呈现:裸select_tag将呈现"area"作为名称/ ID,而表单中的其他内容将具有基于模型的正常名称。

例如,如果模型为"user",则电话字段的名称为"user[phone]"

您可以通过查看传递给日志中的操作的参数来看到这种情况。

使用表单助手,或者将其命名与其他字段相同。

另请参阅:selectselect_tagselect(无用)和form helpers"Understanding Parameter Naming Conventions"部分也可能很有用。

答案 1 :(得分:0)

select_tagtext_field_tag类似:它不与表单构建器(对象form_for产生)合作,以获取正确的参数名称和当前值。

select助手与select_tag略有不同,因为它为您调用了select选项,因此您只需要编写

f.select 'area', [["Notheast", "NE"], ...]