2016-07-07 40 views
0

所以我通過一系列電影角色循環播放,每個角色都有一個複選框。我希望這樣,當我點擊「Select My Cast」按鈕時,我將重定向到我的控制器中的teams_path(index方法),以便能夠獲得我在params hash中的數組中選擇的字符的ID 。如何使用check_box_tag將它傳遞給Rails中的params散列?

下面的代碼:

我放在binding.pry在我的索引方法在我的控制器,而params沒有char_ids陣列或任何相關信息。謝謝您的幫助;我意識到這是一個衆所周知的問題。

回答

0

如果您的控制器沒有從您的代碼段獲取參數,它最有可能的是:

  1. 你忘了,包括您的頁面上的表單標籤
  2. 點擊該link_to錨鏈接上,而不是提交表單。

因此,請確保您有form_forform_tag設置,並確保你使用某種類型的「按鈕」,而不是單純的錨標記(link_to)的提交表單。

PS。您不需要將method: :get添加到您的link_to,因爲它默認爲get

PSS。您可以在您的form_for check_box中使用multiple: true獲取多個值。

0

我剛剛遇到這個問題,需要一段時間才能解決,所以我會發布我的解決方案後代。

我有一個用戶模型序列化哈希場messaging_preferences=> { "articles"=>false, "marketing"=>false, "digest"=>false }

什麼絆倒了我是需要在表單中使用fields_for

<%= f.fields_for :messaging_preferences, user.messaging_preferences do |message_type| %> 
    Marketing emails: <%= message_type.check_box :marketing, {}, "true", "false" %><br /> 
    Article emails: <%= message_type.check_box :articles, {}, "true", "false" %><br /> 
    Weekly digests: <%= message_type.check_box :digest, {}, "true", "false" %><br /> 
    <% end %> 

和更新您的控制器user_params反映(像這樣):``

但與此(和USER_NAME &電子郵件PARAMS)生成此調用服務器:

Parameters: {"utf8"=>"✓", "authenticity_token"=>"{{token}}", "user"=>{"name"=>"Jimmy Johnny", "email"=>"[email protected]", "messaging_preferences"=>{"marketing"=>"false", "articles"=>"false", "digest"=>"false"}}, "commit"=>"Update User", "id"=>"6"} 

所以,這裏我們已經發送了嵌套參數。

相關問題