如果我的用户没有登录,如何防止Ajax执行?

时间:2016-08-31 19:56:23

标签: ruby-on-rails ajax ruby-on-rails-4 controller

我正在使用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:执行成功?

1 个答案:

答案 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 %>