#jquery #ruby-on-rails #ajax
#jquery #ruby-on-rails #ajax
Вопрос:
Итак, я новичок в Ajax в RoR и у меня первая проблема с выполнением файла .js.erb после завершения какого-либо действия. Под «некоторым действием» я подразумеваю не сгенерированное Rails по умолчанию, потому что они, похоже, работают нормально.
Вот что я получил:
-
index.html.erb:
<%= form_tag(:action => 'add_comment', :remote => true) do |c| %> Name: <%= text_field :comment, :name %> <br/> Comment: <br/> <%= text_area :comment, :text, :cols => 30, :rows => 10 %> <br/><br/> <%= submit_tag 'Add comment' %> <% end %>
-
действие add_comment в comments_controller.rb:
def add_comment @comment = Comment.new(params[:comment]) @comment.save respond_to do |format| format.html { redirect_to comments_path } format.js end end
-
routes.rb:
match 'comments/add_comment' => 'comments#add_comment'
И все же комментарий добавляется при обновлении страницы — add_comment.js.erb не выполняется (при переименовании обоих действий add_comment и add_comment.js.erb в «create» работает).
Что я делаю не так?
Ответ №1:
<%= form_tag add_comment_path, :remote => true do %>
...
<% end %>
В ваших маршрутах:
resources :comments do
post :add, :on => :collection
end
Комментарии:
1. Спасибо, наконец-то работает. Я пробовал этот маршрут, но, похоже, я не понимаю разницы между «add_comment_comments_path» и «:action => ‘add_comment’ (: controller => ‘comments’)» в аргументах form_tag, и это было причиной моих проблем — не могли бы вы объяснить?