link需要id,但在签出并创建错误时为nil

时间:2013-09-11 23:27:42

标签: ruby-on-rails ruby authentication devise

我的网站的每个页面都有一个导航栏。导航栏中有一个链接,如下所示:

<%= link_to 'Publish' , new_user_comic_title_path(user_id: current_user.id) %>

我正在使用DEVISE gem。每个用户都有很多Comic_titles,这就是我拥有new_user_comic_title_path的原因。问题是,当用户退出时,current_user.id = nil。错误如下:

Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id

我希望(1)呈现页面而不会抛出此错误;(2)如果单击链接且用户未签名,则会重定向到登录页面。

非常感谢帮助!

2 个答案:

答案 0 :(得分:0)

<% if signed_in? %>
  <%= link_to 'Publish' , new_user_comic_title_path(user_id: current_user.id) %>
<% else %>
  <%= link_to 'Publish' , sign_in_path %>
<% end %>

<%= link_to 'Publish' , signed_in? ? new_user_comic_title_path(user_id: current_user.id) : sign_in_path %>

答案 1 :(得分:0)

如果你正在使用devise gem那么

<% if user_signed_in? %>
  <%= link_to 'Publish' , new_user_comic_title_path(user_id: current_user.id) %>
<% else %>
  <%= link_to 'Publish' , new_session_path(:user) %>
<% end %>