weixin_33681778 2018-02-18 20:07 采纳率: 0%
浏览 12

将http请求重定向到ajax

My app has a modal sign in form that I display using ajax:

<% if !current_user %>
  <%= link_to "Sign in", signin_path, remote: true %>
<% end %>

routes.rb

get 'signin', to: 'static_pages#signin', as: 'signin'

static_pages_controller.rb

def signin
  respond_to do |format|
    format.html { render :action => 'signin.js.erb' }
    format.js   { render :action => 'signin.js.erb' }
  end     
end  

signin.js.erb

$('#modalPlaceholder').html("<%= j render(partial: '/static_pages/signin') %>");
$('#modalPlaceholder').show();

This works well.

I would now like to intercept actions that require user sign in and display this modal. In my application controller I have:

application_controller.rb

def require_signin!
  if current_user.nil?
    render :action => '../static_pages/signin.js.erb'
  end
end
helper_method :require_signin!

This works when the originating action is remote: :true and rails simply redirects it however when the originating action is a standard request the action is intercepted correctly by the application controller however the modal is displayed on screen in raw html and not loaded correctly.

  • 写回答

1条回答 默认 最新

  • weixin_33747129 2018-02-18 20:53
    关注

    You can check format type of request and render for it.

    def require_signin!
      if current_user.nil?
        if request.format.html?
           #html render file here
        else
           render :action => '../static_pages/signin.js.erb'
        end
      end
    end
    
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器