在Rails中static_page上打破的嵌套Post Model链接

时间:2013-09-07 03:30:31

标签: ruby-on-rails ruby hyperlink ruby-on-rails-4 nested-attributes

好吧我有一个用户可以创建集合的应用程序,一旦他们创建了集合,他们就可以为该集合创建产品。因此每个系列都有许多产品,每个产品都属于一个系列。在“集合”视图和“产品”视图上,链接非常有用。为了澄清产品是通过与它们相关联的collection_id来关联的,以告诉它们它们属于哪个集合。我常用的方法适用于产品控制器和集合控制器是这个

def show
  @collection = Collection.find(params[:collection_id])
  @design = @collection.designs.all
end

我遇到的问题是在静态页面上...让我们称之为主页。在这个页面上,我列出了所有产品。如果您点击产品,它会将您带到相应的产品页面(通过集合,即localhost / collections / 2 / products / 5 ......这些数字与集合和产品的ID相关)。

我使用的是我在Collection和Product视图中使用的相同链接

link_to collection_design_path(@collection, design)

就像我提到的,这些链接非常适合收集和产品视图。这是主页的static_pages_controller

def home
  @design = Design.all
end

它显示了所有设计,但链接看起来像这样

localhost/collections//designs/3 

它正在跳过该集合的ID。有人有解决方案吗?我之前已经问过这个问题,但不幸的是答案都是错误的。

修改

设计和产品是一回事。我使用名称设计搭建,所以我使用它,但它们基本上是产品......如果混淆任何人阅读

修改 这是路线文件

resources :collections do
  resources :designs do
    member do
      post :like
      post :unlike
    end
  end
end

你可以忽略这样的东西而不像..只是为了喜欢和不喜欢的产品/设计......路线文件显示了设计如何嵌套在收藏链接中

2 个答案:

答案 0 :(得分:1)

如果您遍历@design集合:

<ul>
  <% @design.each do |design| %>
    <li><%= link_to collection_design_path(design.collection, design) %></li>
  <% end %>
</ul>

答案 1 :(得分:0)

您的路线非常完美。很可能你的@collection有一个nil ID,因为还没有保存。

您也可以尝试

<%= link_to "link" [@collection, design] %>