如何在Rails中对change进行操作?

时间:2011-10-07 10:34:02

标签: javascript ruby-on-rails ajax

我想使用collection_select方法传递link_to_remote一个值。当我这样做时,我收到了内部服务器错误。我正在使用Rails 2.3.8。我的代码:

 <%= 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

1 个答案:

答案 0 :(得分:2)

onchange会使用javascript,您在a提供了一个HTML link_to_remote元素。

我猜你想要将用户重定向到你选择的页面?

<%= 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 %>

有更简洁的方法可以做到这一点,Unobtrusive Javascript for one,但我认为这就是你要找的。