2012-02-14 10 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

ここで '選択 'のヘルプを見つけることができます:http://guides.rubyonrails.org/form_helpers.html#making-select-boxes-with-ease – Baldrick

答えて

8

selectにname属性を指定します。フォームが送信されると、選択したオプションの値が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

私はまだ問題があります。あなたは私のコードから見ることができます –

+0

これは私のために働いた。とてもシンプルでした! – adg

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のようなフォームヘルパーの宝石を使用することをお勧め。それはあなたの人生をはるかに簡単にします。