#javascript #ruby-on-rails #ajax
#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:
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 %>
Есть более чистые способы сделать это, например, ненавязчивый Javascript, но я думаю, что это то, что вы ищете.
Комментарии:
1. Я сделал это … но я все еще получаю ошибку. Я добавляю свой код контроллера выше. почему я получил эту ошибку?
2. Не могли бы вы опубликовать трассировку стека ошибки, пожалуйста? Возможно, в вашем collection_select синтаксическая ошибка? Кроме того, чего вы пытаетесь достичь именно в find_new? Я бы не рекомендовал получать всю коллекцию трейнеров, если вы просто пытаетесь выяснить, является ли это одним?
3. Я не получил никакой трассировки стека… Я получил эту ошибку от firebug. Я сделал этот код внутри всплывающего окна. Он использовал jQuery. Я хочу получить все трейнеры…
4. Если вы перейдете к своей консоли, вы должны увидеть трассировку стека, если вы получаете ошибку 500 из браузера.