2013-08-16 26 views
1

我有一个侧边栏,其中包含所有用户的链接:shopping_lists。点击其中一个链接后,我想呈现一个显示该特定列表中的:list_items的页面。这里是我的侧边栏部分:通过以下方式渲染视图中的元素:id

<aside class="sidebar-nav-fixed"> 

    <h1>My Lists</h1> 

    <% if user_signed_in? %> 
     <% current_user.shopping_lists.each do |l| %> 
      <ul> 
       <%= link_to "#{l.name}", '#' %> 
      </ul> 
     <% end %> 
    <% else %> 
     <h5><%= link_to "Sign in to manage lists.", new_user_session_path %></h5> 
    <% end %> 
</aside> 

我的问题是:什么路我会在我的地方目前的桩链路来投入,以传递到正确的名单?提前致谢!

回答

1

有两件事情可以做,你授予的航线设置正确:

最简单的是:

link_to "#{l.name}", l 

Rails的应该创建一个类似于http://host/shopping_lists/2

上面的链接什么是

link_to "#{l.name}", shopping_list_path(l) 

速记要查看可用的路线和方法的列表,你可以运行:

bundle exec rake routes 

你的Rails应用程序的根本

+0

完成我的坏控制器命名习惯后完美工作。作为后续行动,一旦我着眼于这一观点,我如何才能在该观点中引用该列表的id:?例如,如果我想用':id''2'显示该列表中的所有列表项(如你给出的例子)。谢谢! – settheline

+0

抱歉有延迟。这实际上与你的模型设置有关。从技术上讲,你可以遍历视图中列表中的所有项目(当然使用急切加载)。如果您可以通过示例说明如何对购物清单进行建模并迁移设置,我可以给您一个更详细的答案。 – konung

2

这将取决于您的路线如何设置。我希望购物清单总是在用户的环境中,所以大概是这样的:

<%= link_to l.name, user_shopping_list_path(current_user, l) %> 

如果购物清单是顶级路线,那么很可能是这样的:

<%= link_to l.name, shopping_list_path(l) %>