2016-07-04 9 views
0

このparamsがどのように機能するのかちょっと混乱します。たとえば、私はこのようにインデックスページで選択したタグを持つユーザーのコレクションを作成しようとしている:selectタグからidをparamsとして取得するにはどうすればよいですか?

ユーザー/ index.html.erb

<%= select_tag "user", options_from_collection_for_select(@users, "id", "name")%> 

<%= link_to "new", new_user_book_path(params[:user]) %> 

私は、ユーザーのリストを持つドロップダウンを持っている、と私は持っています書籍/新しいページにリンクするボタン。ドロップダウンリストで選択したuser idを 'new_user_book_path`に渡すにはどうすればよいですか?

ありがとうございます!

答えて

1

JavaScriptを書く必要があります。プレーンなHTMLに変換する場合、このようになります

<%= select_tag "user", options_from_collection_for_select(@users, "id", "name"), {id: "select_users" } %> 
<!-- If you don't pass id attribute, the default id will be 'user' by convention --> 

<%= link_to "New", new_user_book_path(@users.first.id), id: "btn_book", data: { book_path: new_user_book_path } %> 

我々は何も選択ドロップダウンリストから選択されていないので、もし私たちが、最初のユーザーとのパス設定を持っている

<select name="user" id="select_users"> 
    <option value="1">User1</option> 
    <option value="2">User2</option> 
</select> 

<a id="btn_book" data-book-path="book/new" href="books/new/1">New</a> 

お知らせ、最初のユーザーはparamsに渡されます。ここで、選択したユーザーにパスを更新するスクリプトを作成します。

$(document).ready(function(){ 
    $("#select_users").on('change', function(){ 
    var user = $(this).val(); 
    var path = $("#btn_book").attr("data-book-path"); 
    $("#btn_book").attr('href', path + "/" + user); 
    //#btn_book is the id of our link, where we'll change its href to the selected user 
    }); 
}); 

私は従来のコード、パスなどを変更する可能性があると仮定しています。あなたのニーズに合わせて調整してください。お役に立てれば。

関連する問題