设计在我的导轨应用程序中创建故障
问题描述:
我已经有一个设计问题,我张贴在这里: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">}
一切都应该是确定但为什么我得到这个错误? (旁边没有关于错误的其他信息)
感谢您的帮助和我的理智!
答
我认为这是正常的现象,因为在第二种情况下,你正在试图调用
user_idea_subscriptions_path(current_user, :idea_id => @idea)
然后用户没有登录,所以current_user
是零
那好吧THX!我这样做是因为即使用户没有登录,我想让他看到添加收藏夹按钮,但在控制器中,我将设置一个Flash通知“注册以将想法添加为收藏夹”并重定向到@idea。那我该怎么做? – Pontek 2012-07-17 13:36:03
你不能使用这个路径助手没有user_id,所以你必须使用另一个路径未经授权的用户或只是使用一些JavaScript的“#无授权”网址。 – 2012-07-17 13:40:19