嘿,我已经看到了几个帖子,但我仍然遇到调用问题:method => '删除'并定向到我的控制器的show方法。 destroy方法按预期工作,因为它删除了注释,但在请求完成后,它会在GET上抛出404。这是代码:
<%= link_to 'delete', "/events/#{@event.id}/comments/#{comment.id}.js",
:confirm => 'Are you sure?',
:method => :delete,
:remote => true %>
这是控制器方法:
def destroy
@comment = @event.comments.find(params[:id])
@comment.destroy
redirect_to do |format|
format.html # redirect_to @event, :notice => "comment deleted" }
format.js { render 'destroy.js.erb' }
end
end
我听说这可能是由于没有使用button_to,但我尝试使用button_to而不是link_to,但这样做也是如此。
我也听说过这可能与你在设置中使用jquery的方式有些问题有关,但我觉得我对此表示怀疑,但这是我在jquery中调用的方式以防万一(应用程序。 html.erb):
<%= javascript_include_tag 'jquery-1.5.2.min.js', 'rails', 'application' %>
<%= javascript_include_tag 'jquery-ui-1.8.17.custom.min.js' %>
当我观看rails服务器输出时,我看到它说:
Redirected to http://0.0.0.0:3000/events/1/comments/35
Completed 302 Found in 132ms
ACTION NAME application
Started GET "/events/1/comments/35" for 127.0.0.1 at Wed Feb 08 16:31:43 -0800 2012
AbstractController::ActionNotFound (The action 'show' could not be found for CommentsController):
感谢您的帮助!
答案 0 :(得分:1)
Rails 3.1及更高版本为我们清理了很多... rails.js已经不见了。 Jquery_ujs是gem的一部分,但该文件不应该在您的javascript目录中:
具体来说,我的jquery_ujs文件很旧,仍然“生活”在我的assets / javascript目录中。它仍然有不推荐使用的.live方法。删除文件!!
保持宝石'jquery-rails','〜&gt; 2.1'#REF:https://github.com/rails/jquery-ujs
保持// = require jquery和// = require jquery_ujs和// = require_tree。
在您的application.js文件中
确保更新gem和bundle install以获取最新的gem。
如果抛出javascript错误,就像我的“偷偷摸摸”的情况一样,其余的link_to js将无效。现在删除和确认对话框工作正常。一个古老的jquery_ujs是罪魁祸首。
答案 1 :(得分:0)
我会确保你的应用中有适当版本的rails.js。 rails.js现在负责确保删除链接实际使用delete方法,因此您可能需要更新rails.js文件。您正在运行什么版本的rails?
答案 2 :(得分:0)
您的config/routes.rb
文件可能存在问题。如果routes.rb
文件中的较早条目与events/:id/comments/:id
匹配并指向comments#show
,则可能会导致此错误。
答案 3 :(得分:0)
format.html
可能会导致它。
用这个改变这一行
format.html { render :nothing => true }