通过link_to在ruby上传递参数


70

我有这行代码:

<%= link_to "Add to cart", :controller => "car", :action => "add_to_cart", :car => car %>

当我在add_to_cart方法中...我该怎么称呼:car?

@car = Car.new(params[:car])

那是行不通的,因为它说我正在尝试将其字符串化。

我不明白这是怎么回事。因为我使用它来创建新用户,并且效果很好。

顺便说一句,汽车是我的汽车目标。

Answers:


141

尝试:

<%= link_to "Add to cart", {:controller => "car", :action => "add_to_cart", :car => car.id }%>

然后在您的控制器中

@car = Car.find(params[:car])

您可以在数据库的“汽车”表(与铁路复数形式)中找到ID为==的汽车

希望能帮助到你!快乐编码

一年多以后,但是如果您看到它或任何人看到,我可以使用积分; D


1
但是,如果参数取决于输入的值,该值实际上是动态的,该怎么办?
Sebastialonso

80

上面并没有为我工作,但这个确实

<%= link_to "text_to_show_in_url", action_controller_path(:gender => "male", :param2=> "something_else") %>


6

也许试试这个:

<%= link_to "Add to cart", 
            :controller => "car", 
            :action => "add_to_cart", 
            :car => car.attributes %>

但是我真的很想看看该页面的汽车对象正在哪里设置(即其余视图)。


2

您可能不想将car对象作为参数传递,请尝试仅传递car.idinspect(params)单击“添加到购物车”后,您会得到什么?


问题是我没有将这些车保存在任何地方,因为我是从网络上刮取信息,也没有将它们存储在任何地方。因此,该ID尚不存在,除此之外,这将是无用的: /
Lilz

再一次,检查(参数)会得到什么?
09年

1
params [:product] .inspect返回为空“”
Lilz

如果没有“ id”,您希望成为什么参数?
Dmytrii Nagirniak
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.