2012-02-14 26 views
1

如何將選定的值從下拉列表傳遞給Ruby中的控制器?如何將選定的值從下拉列表傳遞給Ruby中的控制器?

<select> 
    <option value="0">New</option> 
    <option value="1">SubCategory1</option> 
    <option value="2">SubCategory2</option> 
    <option value="3">SubCategory3</option> 
</select> 

仍然我在這裏有一個問題是我的代碼

<select name="category_id"> 
    <option value="0">New Category</option> 
    <% for category in categories %> 
    <option value="<%= category.id %>"><%= category.name %></option> 
    <% end %> 
    </select> 

def create 
     if params[:category_id] == 0 
      @category = Category.new(params[:category]) 
      respond_to do |format| 
      if @category.save 
      end 

     else 
     @subcategory = Subcategory.new(params[:subcategory]) 
      respond_to do |format| 
       if @subcategory.save 
        .... 
       end 
      end 
     end 
    end 

的PARAMS [:CATEGORY_ID] == 0永不因爲執行不將值0傳送到控制器。我該如何解決它?

+1

你可以在這裏找到'select'的幫助:http://guides.rubyonrails.org/form_helpers.html#making-select-boxes-with-ease – Baldrick 2012-02-14 16:48:38

回答

8

給選擇一個名稱屬性。提交表單後,您會在params哈希中找到所選選項的值。

例如

<select name="category_id"> 
    <option value="0">New</option> 
    <option value="1">SubCategory1</option> 
    <option value="2">SubCategory2</option> 
    <option value="3">SubCategory3</option> 
</select> 

params[:category_id] 
+0

我還有一個問題。正如你可以從我的代碼看到 – 2012-02-20 23:22:42

+0

這對我有效。非常簡單! – adg 2016-12-30 05:06:42

1

假設你有一個產品模型,並要在CATEGORY_ID存儲在裏面。在你的形式中,你會這樣做。

<select name="product[category_id]"> 
    <option value="0">New</option> 
    <option value="1">SubCategory1</option> 
    <option value="2">SubCategory2</option> 
    <option value="3">SubCategory3</option> 
</select> 

然後你就可以用params[:product][:category_id]

得到它在控制我建議你使用表單輔助寶石一樣Simple Form。它讓你的生活變得更輕鬆。

相關問題