2013-02-11 3 views
0

Ruby Rails에서 값을 입력하는 텍스트 상자를 표시하고 옆에있는 버튼을 사용하여 텍스트 상자에 입력 한 내용을 기반으로 검색을 수행하려고합니다. 내 코드 :Ruby Rails : 컨트롤러에 텍스트 상자 값 전달

<%= number_field_tag :user_search_id, params[:user_search_id] %> 

<%= button_to 'Search by user id', {:controller=>"posts", :action=>"search", :user_id => params[:user_search_id]} %> 

그러나, 아무리 무슨 텍스트 상자에 입력되지는 자사가 PARAMS 해시에 배치하지 않고, 나는 컨트롤러에 아무것도 전달하지 결국 않았다. USER_ID와 : 내가 시도

def search 

@post = Post.find(params[:user_id]) 

    respond_to do |format| 
    format.html { redirect_to posts_url } 
    format.json { render json: @post } 
    end 

    #redirect_to posts_url 

end 

주 모두 통과 : 여기

컨트롤러 코드입니다 user_search_id를, 어느 쪽도 제대로 전달합니다. 그러나 리터럴 (숫자 1)을 전달하면 올바르게 전달되므로 user_search_id 값이 해당 키와 연결되지 않습니다. 당신이 양식을 필요

답변

1

... 컨트롤러에서

<%= form_tag({:controller=>"posts", :action=>"search"}, method: :get) do %> 
    <%= number_field_tag :user_search_id %> 
    <%= submit_tag 'Search by user id', name: nil %> 
<% end %> 

당신은 사용할 수 있습니다

params[:user_search_id] 

편집 - 위의 양식을 사용하여, 당신의 params[:user_search_id]에 액세스 할 수 있습니다 귀하의 컨트롤러. 이제 where을 사용하여 올바른 게시물을 찾을 수 있습니다.

@post = Post.where(:id => params[:user_search_id]) 
+0

거푸집 없음 - 동일한 문제점, 컨트롤러는 param 해시 태그에 아무것도 표시하지 않습니다. 내용을보고하지 않는 지역 변수에 전달하여 확인했습니다. 어떻게 든 새로운 페이지로 이동하여 텍스트 상자의 내용을 등록해야 사용할 수 있습니까? – user2062016

+0

어디에서'params [: user_search_id]'를 사용하려고합니까? 컨트롤러 포스트, 액션 검색에 있어야합니다. 귀하의 질문에 컨트롤러를 포함하십시오. 또한, 당신은 URL에서 검색을 볼 수 있어야합니다. – gabrielhilal

+0

user_search_id를 사용하여 사용자가 키로 검색 할 수 있도록합니다. 리터럴 작품을 전달, 난 그냥 텍스트 상자에 뭐가 나올 수 없습니다. 내 원래 게시물에 컨트롤러 코드가 추가되었습니다. – user2062016