2011-12-23 67 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