1

我有一个用户填写的表格,其中包含标题和正文。我还想传递他们存储在 cookie 中的用户 ID 以及其他几个计算值。

在我的控制器的创建部分中,我有以下代码:

@ticket = Ticket.new(params[:ticket])
@ticket.save
redirect_to ticket_path(@ticket)

我是否需要在 Ticket.new 调用之后分配这些计算值,或者我可以以某种方式将这些值与 params 散列一起传递?

4

2 回答 2

3

由于 params 的票证键只是一个哈希,您可以使用合并添加额外的键/值对

@ticket = Ticket.new(params[:ticket].merge({user_id: cookies[:user_id]}))
@ticket.save
redirect_to ticket_path(@ticket)

假设您正在使用 Active Relation,并且User has_many :tickets您也可以执行类似的操作(此示例假设current_user由类似于 Devise 的内容定义)

@ticket = current_user.tickets.build(params[:ticket])
@ticket.save
redirect_to ticket_path(@ticket)

第二种方法可以更清楚地说明您要做什么。

于 2012-07-23T20:20:12.380 回答
0

您可以f.hidden_field在表单中使用来传递一些额外的计算值。

如果要分配current_user票证,最好在单独分配中进行,并对其进行保护。

于 2012-07-23T20:10:37.323 回答