2011-10-07 5 views
0

collection_select 값을 link_to_remote 메서드로 전달하고 싶습니다. 이 작업을 수행 할 때 내부 서버 오류가 발생했습니다. 레일 2.3.8을 사용하고 있습니다. 내 코드 :레일스에서 ​​어떻게 onchange를 할 수 있습니까?

<%= collection_select("event", "trainer_id", @trainers , :id, :name, {:prompt => 'Select a Trainer'}, {:onchange=> "#{link_to_remote(:url => {:controller => 'events', :action => 'find_new' }, :with=>"'trainer_id='+value")}"}) %> 

추가

이 내 컨트롤러 코드 :

def find_new 
@trainers= Trainer.all 
if ["0"].include?(params[:trainer_id]) 
    render :partial=>'events/me' 
    else 
    render :partial=> 'events/something' 
    end 
end 

답변

2

onchange 당신이 당신의 link_to_remote와 함께 HTML a 요소를 제공하고, 자바 스크립트를 기대합니다.

사용자가 선택한 페이지로 사용자를 리디렉션하고 싶습니다.

<%= collection_select("event", "trainer_id", @trainers , :id, :name, {:prompt => 'Select a Trainer'}, {:onchange=> "redirectToTrainer(this.value)"}) %> 

<%= javascript_tag do %> 
    function redirectToTrainer(trainerId){ 
    window.location = "<%= url_for(:controller => 'events', :action => 'find_new') %>?" + trainerId; 
    } 
<% end %> 

이 작업을보다 명확하게 수행 할 수있는 방법은 눈에 잘 띄지 않는 Javascript를 사용하는 것이지만 그게 내가 생각하는 것입니다.

+0

나는 이것을했다. .. 그러나 아직도 Iam는 오류를 얻고있다. 위의 컨트롤러 코드를 추가합니다. 왜이 오류가 발생 했습니까? – Rosh

+0

오류의 스택 추적을 게시 할 수 있습니까? 콜렉션 _ 선택에 구문 오류가 있습니까? 또한, find_new에서 정확히 무엇을 달성하려고합니까? 트레이너가 전체 트레이너를 얻는 것에 반대하는 것이 좋습니다. –

+0

스택 추적을 얻지 못했습니다 ...이 오류가 발생했습니다. 나는이 코드를 pop_up 상자 안에 만들었다. 그것은 jQuery를 사용하고있었습니다. 모든 트레이너를 얻고 싶습니다 ... – Rosh

관련 문제