在link_to中传递参数

时间:2015-03-06 00:10:47

标签: ruby-on-rails ruby-on-rails-4 parameters link-to

在我的网站中,我有一个全局页面,显示所有卖家创建的所有馆藏(sections.html.erb)。每个系列都有多个产品。该集合在集合表中具有id和user_id列。

我的collection.rb文件包含:

has_many :listings, dependent: :destroy
belongs_to :user

我的user.rb文件包含:

has_many :collections, dependent: :destroy
has_many :listings, dependent: :destroy

我想直接从主要全局页面链接到集合的详细信息页面,该页面显示该集合中的所有产品(shopcollected.html.erb)。我可以从卖家的商店收藏页面(shopcollections.html.erb)成功链接到此详细信息页面,但我无法从主要全局页面获取link_to。

我今天将我的路线更改为'/ shopcollected /:id /:collection_id',所以我想我在'shopcollections.html.erb'页面上传递的link_to参数对于主要全局可以是相同的page link_to。但很明显,这不是因为我在'sections.html.erb'上得到了错误:

No route matches {:action=>"shopcollected", :collection_id=>#<Collection id: 21, name: "boden collection 1", created_at: "2015-03-04 21:45:06", updated_at: "2015-03-04 21:45:06", user_id: 13>, :controller=>"listings"} missing required keys: [:id]

我显然缺少参数:id所以主要的全局链接如下:

www.website.com/shopcollected/{USER_ID}/{COLLECTION_ID}

但我已经尝试了所有我能想到的东西,但仍然无法让它发挥作用。有没有人知道我需要通过我的'sections.html.erb'link_to传递什么?如果我需要再次更改我的路线,如果是这样,那么什么?

注意:如果我将“shopcollected”路线改为其他任何路线,那么我就无法再从“shopcollections”页面链接到该路线。我需要保持这一点,但是从'sections.html.erb'页面添加链接。

途径:

get 'listings/sections' => 'listings#sections', as: 'sections'  
get '/shopcollections/:id' => 'listings#shopcollections', as: 'shopcollections'
get '/shopcollected/:id/:collection_id' => 'listings#shopcollected', as: 'shopcollected'

CONTROLLER

def sections
@collections = Collection.includes(:listings).order(created_at: :desc)
end

def shop
@user = User.find(params[:id])
@listings = Listing.where(user: User.find(params[:id])).order("created_at DESC")
end

def shopcollections
@user = User.find(params[:id])
@collections = @user.collections.order("created_at DESC")
end

def shopcollected
@user = User.find(params[:id])
@collection = Collection.find(params[:collection_id])
@listings = Listing.where(collection: params[:collection_id])
end

shopcollections.html.erb:

<%= link_to "#{collection.name}", shopcollected_path(collection_id: collection) %>

sections.html.erb:

<%= link_to "#{collection.name}", shopcollected_path( ?? WHAT TO PUT HERE ?? ) %>

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我终于开始工作了。更改为我的&section; ..html.erb&#39;:

<%= link_to "#{collection.name}", shopcollected_path(collection.user.id, collection.id) %>

我的座右铭:永不放弃:)。