Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails中链接到远程的问题_Ruby On Rails_Ruby_Ajax - Fatal编程技术网

Ruby on rails rails中链接到远程的问题

Ruby on rails rails中链接到远程的问题,ruby-on-rails,ruby,ajax,Ruby On Rails,Ruby,Ajax,我在rails中使用link_to_remote时遇到一致性问题 我有两个link_to_remote的用例,它们生成不同的ajax。我不明白为什么,这让我发疯 这里是用例一 <%= link_to_remote "section-", :update => "sections", :url => {:action => :destroy, :controller => "sections", :id => @section.id } %> 如果将此复

我在rails中使用link_to_remote时遇到一致性问题

我有两个link_to_remote的用例,它们生成不同的ajax。我不明白为什么,这让我发疯

这里是用例一

<%= link_to_remote "section-", :update => "sections", :url => {:action => :destroy, :controller => "sections", :id => @section.id } %>

如果将此复制到视图中,会得到什么

<%= url_for :action => :destroy, :controller => :questions, :id => @question.id %>
:destroy,:controller=>:questions,:id=>@question.id%>

我怀疑问题并不是真的与link_to_remote有关,而是与。一旦url\u for返回您期望的url,然后再次尝试链接到\u remote。

只需在链接到远程调用中添加:method=>:delete可能是最简单的修复方法:

<%= link_to_remote "question-", :update =>"questions-1", :url => {:action => :destroy, :controller => "questions", :id => @question.id}, :method => :delete %>
“questions-1”,:url=>{:action=>:destroy,:controller=>“questions”,:id=>@question.id},:method=>:delete%>

这将强制对/questions/:id的调用使用HTTP DELETE方法。如果您希望上述调用生成url/questions/destroy/:id,我相信您需要手动更改路由,因为默认的map.resources似乎没有达到这个效果。

你能发布你的routes.rb文件吗?我想你是对的,我从你上面的代码片段中得到了/questions/XX,而我应该得到/questions/destroy/XX。问题是,我不知道如何修复这种路由行为。问题和部分的“map.resources”行看起来相同。谢谢。是的,这就解决了。我今天早上才发现这件事,然后我偶然发现了你的帖子。
<a href="#" onclick="if { new Ajax.Updater('questions-1', '/questions/1', {asynchronous:true, evalScripts:true, parameters:'authenticity_token=' + encodeURIComponent('f5e50e62fafd118e4588b33c9571ea6eef864176')}); }; return false;">question-</a>

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
<%= url_for :action => :destroy, :controller => :questions, :id => @question.id %>
<%= link_to_remote "question-", :update =>"questions-1", :url => {:action => :destroy, :controller => "questions", :id => @question.id}, :method => :delete %>