2012-07-17 41 views
0

我已经有一个设计问题,我张贴在这里: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">} 

一切都应该是确定但为什么我得到这个错误? (旁边没有关于错误的其他信息)
感谢您的帮助和我的理智!

回答

2

我认为这是正常的现象,因为在第二种情况下,你正在试图调用

user_idea_subscriptions_path(current_user, :idea_id => @idea) 

然后用户没有登录,所以current_user是零

+0

那好吧THX!我这样做是因为即使用户没有登录,我想让他看到添加收藏夹按钮,但在控制器中,我将设置一个Flash通知“注册以将想法添加为收藏夹”并重定向到@idea。那我该怎么做? – Pontek 2012-07-17 13:36:03

+0

你不能使用这个路径助手没有user_id,所以你必须使用另一个路径未经授权的用户或只是使用一些JavaScript的“#无授权”网址。 – 2012-07-17 13:40:19