如何解决用户未登录时如何传递此代码?
| 我有这个表格:<%= form_for current_user.relationships.build(:followed_id => @profile.user.id) do |f| %>
<div><%= f.hidden_field :followed_id %></div>
<div class=\"follow_button\"><%= f.submit \"Follow\" %></div>
<% end %>
并且由于使用了“ 1”,因此当用户未登录时会引发错误。我希望未登录的用户能够看到该按钮,但会失败:
before_filter :authenticate
单击时。我应该如何更改表格代码?似乎我可能需要将Relationship.build调用移至控制器?或者如何使按钮在我的应用程序控制器中调用authenticate
方法?
解决方法
我不认为像以前建议的那样调用User.new是一个好习惯。您始终可以在自己的观点中与众不同:
<% if current_user %>
Form goes here
<% else %>
<div class=\"follow_button\">Log in to follow</div>
<% end %>
(或点击另一个用于登录的按钮)
,您可以始终向该系统添加一个通用的“注销”用户,默认为不存在会话时的用户,然后在处理单击时检查该用户。这样可以在不破坏模型的情况下为您提供所需的灵活性。
,怎么样:
<% user = current_user || User.new %>
<%= form_for user.relationships.build(:followed_id => @profile.user.id) do |f| > <div>
<%= f.hidden_field :followed_id %></div> <div class=\"follow_button\">
<%= f.submit \"Follow\" %>
</div>
<% end %>
我的应用程序中的关系几乎相同,并且似乎可以正常工作:
User.new.friendships.build(:friend_id => 4) # =>
<Friendship id: nil,user_id: 0,friend_id: 4,approved: false,canceled: false,marked_as_deleted: false,created_at: nil,updated_at: nil>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。