AnA*_*ice 5 ruby-on-rails ruby-on-rails-3
Rails,def destroy,没有响应destroy.js.erb
这是我的方法:
# DELETE /Groups/1
# DELETE /Groups/1.xml
def destroy
@group = Group.find(params[:id])
@group.destroy
respond_to do |format|
format.js
end
end
Run Code Online (Sandbox Code Playgroud)
在视图中我有:
<a href="/groups/122" data-confirm="Are you sure?" data-method="delete" rel="nofollow" >Delete</a>
Run Code Online (Sandbox Code Playgroud)
但是在删除时,日志显示:
小号
tarted POST "/groups/128" for 127.0.0.1 at Fri Apr 22 22:21:31 -0700 2011
Processing by GroupsController#destroy as HTML
Parameters: {"authenticity_token"=>"J+A2DN87qoigNxw97oK6NWqPQvXt7KAwLMAM7Er/eWM=", "id"=>"128"}
.....
Completed 406 Not Acceptable in 372ms
Run Code Online (Sandbox Code Playgroud)
永远不会调用destory.js.erb.有什么想法吗?谢谢
好吧,好吧,这里有几个问题:
第一,
<a href="/groups/122" data-confirm="Are you sure?" data-method="delete" rel="nofollow" >Delete</a>
Run Code Online (Sandbox Code Playgroud)
此链接不是远程的,您可以在您提供的日志中看到它:
Processing by GroupsController#destroy as HTML
Run Code Online (Sandbox Code Playgroud)
让你的链接提交一个ajax请求add:remote => true(就像你已经拥有的那样:confirm =>'你确定吗?'和:method =>:destroy)
第二,你应该在使用javascript响应时禁用布局渲染.
所以,你的行动可能如下:
respond_to do |format|
format.js { render :template => 'groups/destroy.js.erb', :layout => false }
end
Run Code Online (Sandbox Code Playgroud)
为了更容易,我已将此添加到我的控制器:
layout Proc.new { |controller| controller.request.xhr?? false : 'application' }
Run Code Online (Sandbox Code Playgroud)
因此,如果请求是xhr类型,则不会呈现布局.然后你就可以像现在这样离开你的行动,它应该有效
| 归档时间: |
|
| 查看次数: |
3335 次 |
| 最近记录: |