如何在link_to

时间:2016-08-07 00:27:14

标签: ruby-on-rails devise

我已经看到了这方面的解决方案,但似乎都不适合我在这里尝试做的事情。我有这个代码作为管理员,我想在每个用户的名字旁边有一个链接,以该用户身份登录。

<ol>
    <% User.all.each do |u| %>
    <li>
        <%= u.username %>
        [enter link_to sign in @u or something]
    </li>
    <% end %>
</ol>

2 个答案:

答案 0 :(得分:0)

看看这个https://github.com/flyerhzm/switch_user

警告

由于安全隐患,应谨慎使用此功能。在生产环境中尤其如此。

答案 1 :(得分:0)

因此,在这种情况下,设计sign_in辅助方法非常有用,但我们无法在视图中使用它,因此我们必须在内部routes devise方法中生成sign_in要实现这一目标,您必须遵循以下步骤

配置/ routes.rb中

get "sign/:id"=>"pages#sign",as:'user_sign'

在路线中添加以上代码

而不是在controler中创建sign操作

应用程序/控制器/ pages_controller.rb

def sign
    user = User.find(params[:id])
    sign_in_and_redirect(user)
end 

最后在视图中进行更改,以便所有代码都能正常工作

  <li>
    <%= u.username %>
    <a href="/users/<%= u.id %>">Prof.</a>
    <img width="50" src="<%= u.profilepic %>">
    <%= link_to "sign in",user_sign_path(u.id)%>
  </li>

我希望它为你工作

只是调整从视图

调用sign_in方法