通过link_to在Ruby on Rails中传递参数

71

我有这行代码:

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

当我在add_to_cart方法中时...如何调用:car?

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

这不起作用,因为它说我正在尝试将其字符串化。

我不明白出了什么问题;因为我曾使用这个来创建新用户,而且效果很好。

顺便说一下,car是我的车对象。

4个回答

141

尝试:

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

然后在您的控制器中进行操作

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

这将在您的“cars”表中查找(使用Rails的复数形式)具有与car.id相等的id的汽车。


2
但是,如果参数取决于一个可能是动态的输入值呢? - Sebastialonso

80

上面的方法对我没用,但是这个有效。

<%= link_to "要显示在URL中的文字", action_controller_path(:gender => "男性", :param2=> "其它参数") %>


7
也许可以尝试这个:
<%= link_to "Add to cart", 
            :controller => "car", 
            :action => "add_to_cart", 
            :car => car.attributes %>

但我真的很想知道这个页面中汽车对象的设置是在哪里完成的(即视图的其余部分)。


2
您可能不想将整个car对象作为参数传递,尝试只传递car.id。在单击“添加到购物车”后,使用inspect(params)会得到什么结果?

问题在于我没有把这些汽车保存在任何地方,因为我是从网上爬取信息,而不是将它们存储在任何地方。因此,ID尚不存在,而且除此之外也毫无用处 :/ - Lilz
再次强调,当您检查(params)时,会得到什么? - bensie
1
params[:product].inspect 返回空值 ""。 - Lilz
如果您没有“id”,您希望成为哪个参数? - Dmytrii Nagirniak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接