我正在使用Rails 4.2.7。我有一个用于处理操作的设置是用户点击我页面上的图像
<%= link_to image_tag('disk.png', :alt => 'Save'), my_object_create_path(:id => my_object.id), :class => 'link-save', title: 'Save', :remote => true %>
然后我有这个咖啡脚本来处理控制器返回后的调用......
$('a.link-save').on 'ajax:success', ->
$(this).closest('td').text('Saved')
问题是,如果我的用户没有登录,我不希望执行上述操作。我在控制器中有这个...
respond_to do |format|
if logged_in? && my_object.save
flash[:notice] = 'Saved successfully'
format.json { render json: my_object, status: :created }
elsif !logged_in?
format.js { render js: "alert('not logged in');" }
else
format.json { render json: my_object.errors, status: :unprocessable_entity }
end
end
如果我的用户未登录,如何阻止我的ajax:执行成功?
答案 0 :(得分:0)
我会修改视图,并且只有在用户登录时才指定类“link-save”。生成的JavaScript将找不到添加处理程序的对象。这不会导致javascript错误,因为如果没有找到任何内容,jQuery选择器可以正常工作。
<%= link_to image_tag('disk.png', :alt => 'Save'),
my_object_create_path(:id => my_object.id),
:class => logged_in? ? 'link-save' : '',
title: 'Save', :remote => true %>