2011-04-30 5 views
0
내가 선택기에 대해 다음 헬퍼 메소드를 정의 3. 레일 버전에 루비를 사용하고

: 내 index.html.erb에 상기 선택기를 도입드롭 다운 선택, 선택한 옵션

def current_user_selector 
    collection_select(:user, :id, User.all, :id, :name, {:prompt => "Select a User"}); 
    end 

:

... 
<%= current_user_selector %> 
... 

드롭 다운 메뉴에서 선택한 옵션을 컨트롤러에서 액세스 할 수있는 곳을 읽었습니다.

selected_user = params[user][id] 

컨트롤러의 여러 동작에서 위의 행을 추가했지만 계속 예외가 발생합니다.

# GET /users/:id/click 
    # GET /users/:id/click.xml 
    def click 
    @user = User.find(params[:id]) 
    @users_to_click = User.where("clicks_given - clicks_received >= ?", -5).order("clicks_given - clicks_received") 
    selected_user = params[user][id] 

    respond_to do |format| 
     format.html # click.html.erb 
     format.xml { render :xml => @user } 
    end 
    end 

내 질문은, 어떻게 내가 드롭 다운 메뉴의 선택한 사용자를 얻을 :

현재 나는 다음과 같은 행동에있다.

NAREN Sisodiya는 다음과 같은 예외를 알려준 :

You have a nil object when you didn't expect it! 
You might have expected an instance of ActiveRecord::Base. 
The error occurred while evaluating nil.[] 
+0

드롭 다운을 사용하는 곳에 양식을 넣을 수 있습니까? –

+0

드롭 다운 메뉴는'index.html.erb'에서 렌더링됩니다. 그것은 의문의 여지가 있습니다. –

답변

1

PARAMS [: 사용자] [: 아이디]이 ID를 사용하여 사용자를 찾을 필요가 있으므로, 선택한 사용자의 사용자 ID를 제공 할 것입니다.

selected_user = User.find(params[:user][:id]) 

편집 : 또한

것은 당신이 PARAMS로 접근하고 있는지 확인 [: 사용자] [: ID] 대신 PARAMS [사용자] [ID]

업데이트 :

클릭 동작을 호출하는 버튼이 있다고 언급했듯이 선택한 값을 서버에 전달해야합니다. 이제부터는 드롭 다운과 하나의 제출 버튼을 사용하여을 만들 수 있습니다.

<%= form_tag('/click',:method=>'get') do -%> 
<%= current_user_selector %> 
<%= submit_tag 'Get Selected' %> 
<% end -%> 
+0

작동하지 않았습니다. 반환 된 오류에 대한 위의 내 질문을 참조하십시오. –

+0

인덱스 파일에서 드롭 다운을 렌더링하는 경우 선택한 값을 서버로 전달하는 방법은 무엇입니까? 서버에 전달해야합니다. 클릭 액션이 호출 될 때? –

+0

인덱스 파일에는 클릭 동작을 호출하는 버튼이 있습니다. 선택한 값을 서버에 전달하는 방법은 무엇입니까? –

관련 문제