2016-07-04 2 views
0

이 params가 어떻게 작동하는지 조금 혼란 스럽습니다. 예를 들어 나는이 같은 인덱스 페이지에서 select 태그와 사용자의 컬렉션을 만들려고 :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

일부 자바 스크립트를 작성해야합니다. 일반 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 
    }); 
}); 

기존 코드를 사용한다고 가정하고 경로 및 기타 사항이 변경 될 수 있습니다. 귀하의 필요에 따라 조정하십시오. 희망이 도움이됩니다.

관련 문제