У меня проблема с согласованностью при использовании link_to_remote в rails.
У меня есть 2 варианта использования link_to_remote, и они генерируют разные ajax. Я не могу понять, почему, и это сводит меня с ума.
Вот вариант использования один ...
<%= link_to_remote "section-", :update => "sections", :url => {:action => :destroy, :controller => "sections", :id => @section.id } %>
Это генерирует соответствующий ajax (как показано ниже) и работает, как я ожидаю. Обратите внимание, что он получает параметр: action из вызова и правильно вставляет его в ajax.
<a href="#" onclick="if { new Ajax.Updater('sections', '/sections/destroy/1', {asynchronous:true, evalScripts:true, parameters:'authenticity_token=' + encodeURIComponent('f5e50e62fafd118e4588b33c9571ea6eef864176')}); }; return false;">section-</a>
У меня также есть другой экземпляр, где я использую link_to_remote, но он генерирует неправильный ajax. Вариант использования практически идентичен, за исключением того, что контроллер отличается. В любом случае, я не ожидал бы, что это приведет к другому Ajax.
Звонок ...
<%= link_to_remote "question-", :update =>"questions-1", :url => {:action => :destroy, :controller => "questions", :id => @question.id} %>
Получившийся Аякс ...
<a href="#" onclick="if { new Ajax.Updater('questions-1', '/questions/1', {asynchronous:true, evalScripts:true, parameters:'authenticity_token=' + encodeURIComponent('f5e50e62fafd118e4588b33c9571ea6eef864176')}); }; return false;">question-</a>
Очевидное отличие здесь во втором аргументе Ajax.Updater. Параметр: action отсутствует на этом пути. Зачем? Это приводит к неправильному коду для меня, но я не могу понять, почему это происходит. Вызовы link_to_remote практически идентичны.
Пожалуйста, направьте меня в правильном направлении. Спасибо.
Ниже приведен мой файл route.rb ...
ActionController::Routing::Routes.draw do |map|
map.resources :questions, :has_one => :section, :collection => { :sort => :post }
map.resources :sections, :has_many => :questions, :has_one => :form, :collection => { :sort => :post }
map.resources :forms, :has_many => :sections
# You can have the root of your site routed with map.root -- just remember to delete public/index.html.
map.root :controller => "forms"
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
end