好吧我有一个用户可以创建集合的应用程序,一旦他们创建了集合,他们就可以为该集合创建产品。因此每个系列都有许多产品,每个产品都属于一个系列。在“集合”视图和“产品”视图上,链接非常有用。为了澄清产品是通过与它们相关联的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
你可以忽略这样的东西而不像..只是为了喜欢和不喜欢的产品/设计......路线文件显示了设计如何嵌套在收藏链接中
答案 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] %>