我已经发布了一个问题,我发布在这里:Weird route malfunction, mix between devise and own controller
我希望这只是一次性的问题,但设计让我发疯了!
如果我这样做,一切都很好
<% if user_signed_in? %>
<% if current_user.ideas.include?(@idea) %>
<%= button_to 'Remove from Favorites', user_idea_subscription(@idea.id), method: :delete%>
<% else %>
<%= button_to 'Add to Favorites', user_idea_subscriptions_path(current_user, :idea_id => @idea) %>
<% end %>
<% end %>
但如果我这样做:
<% if user_signed_in? and current_user.ideas.include?(@idea) %>
<%= button_to 'Remove from Favorites', user_idea_subscription(@idea.id), method: :delete%>
<% else %>
<%= button_to 'Add to Favorites', user_idea_subscriptions_path(current_user, :idea_id => @idea) %>
<% end %>
然后我遇到了这个错误:
No route matches {:controller=>"idea_subscriptions", :idea_id=>#<Idea id: 12, name: "Chute libre", description: "50sec a 50m/s", created_at: "2012-07-12 10:02:30", updated_at: "2012-07-12 10:02:30">}
一切都应该没问题,但为什么我会收到这个错误? (旁边没有关于错误的其他信息)
谢谢你的帮助和我的理智!
答案 0 :(得分:2)
我认为这是正常行为,因为在第二种情况下,你试图打电话
user_idea_subscriptions_path(current_user, :idea_id => @idea)
然后用户未登录,因此current_user
为零