2011-12-23 62 views
0

我在Rails中有一个表单,我需要在HTML中创建一个选项标记。这是一个非常简单的选项列表与静态值。我可以在HTML创建它很容易,但我想这样做的“Rails的路”似乎无法通过使用select_tag传递变量

这里是我的表格的一部分:

<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的新手

回答

0

select_tag就像text_field_tag:为了得到正确的参数名称和当前值,它不与表单构建器配合(对象form_for产生)。

select助手是非常轻微的不同,以select_tag,它要求选择适合你的选择,所以你只需要编写

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

谢谢!这是我需要的具体信息。现在正在工作。 – 2011-12-24 13:33:17

1

检查您的渲染:裸select_tag将呈现"area"作为名称/ ID,而一切在你的形式将有一个正常的基于模型的名称。

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

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

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

另请参阅:select,select_tag,select(无帮助)和form helpers"Understanding Parameter Naming Conventions"部分可能也有用。

+0

感谢您指出我在正确的方向。 – 2011-12-24 13:30:19