2012-02-28 13 views
0

I持ってこの含むビューをレンダリングするアクション:選択した属性は、レールとのparams値に応じて

<select id ='dynamic_select'> 
    <option value = "<%= activity_path %>">All</option> 
    <option value = "<%= activity_path(:type => 'enrolled') %>">Enrolled</option> 
    <option value = "<%= activity_path(:type => 'redeem') %>">Redeem</option> 
    <option value = "<%= activity_path(:type => 'social') %>">Social</option> 
</select> 

のいずれかのオプションを選択して選択し、マークというレンダリングの正しい/ Railsの道をどのようになりますかtypeパラメータに依存:なしタイプパラメータが存在しない場合は 、「すべて」オプションを選択し、タイプがある場合=入学オプションを選択しパラメータを登録して、私が管理しているように...

それを行うクライアント側でJavascriptを使用していますが、私はRailsの方法が何であるか疑問に思っています。

レンダリングされたHTML:次のような

<select id="dynamic_select" name="dynamic_select"> 
<option value="/activity">All</option> 
<option value="/activity?type=enrolled">Enrolled</option> 
<option value="/activity?type=redeem">Redeem</option> 
<option value="/activity?type=social">Social</option> 
</select> 

答えて

1

何か。私はここにselect_optionsを表示していますが、あなたのコントローラでそれらを生成し、ビューに渡すべきでしょう。

鍵はoptions_for_selectを使用しています。

<% select_options = {"All" => activity_path} %> 
<% %w{Enrolled Redeem Social}.each {|opt| select_options[opt] = activity_path(:type => opt.downcase)} %> 
<% form_for(resource) do |f| %> 
    <%= s.select :dynamic, options_for_select(select_option, :selected => select_options[@default || "All"]) %> 
<% end %> 
+0

これは正しくオプションで選択を移入されたが、私は、フォームを提出していないことに注意してください... typeパラメータに応じて、「選択」属性を追加されていない、私はJSでのonChangeを使用していますが、私はそれが問題だとは思わない。 – Nobita

+0

私の編集を参照してください。私は第2引数がハッシュだと思っています。そして、選択されたキーはどちらを使うかを決定します。 – Gazler

+0

@defaultとは何ですか?値は完全なURLであり、単一の文字列ではないため、選択されたものは「すべて」に対して機能しません。 – Nobita

関連する問題