我有一个用户填写的表格,其中包含标题和正文。我还想传递他们存储在 cookie 中的用户 ID 以及其他几个计算值。
在我的控制器的创建部分中,我有以下代码:
@ticket = Ticket.new(params[:ticket])
@ticket.save
redirect_to ticket_path(@ticket)
我是否需要在 Ticket.new 调用之后分配这些计算值,或者我可以以某种方式将这些值与 params 散列一起传递?
我有一个用户填写的表格,其中包含标题和正文。我还想传递他们存储在 cookie 中的用户 ID 以及其他几个计算值。
在我的控制器的创建部分中,我有以下代码:
@ticket = Ticket.new(params[:ticket])
@ticket.save
redirect_to ticket_path(@ticket)
我是否需要在 Ticket.new 调用之后分配这些计算值,或者我可以以某种方式将这些值与 params 散列一起传递?
由于 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)
第二种方法可以更清楚地说明您要做什么。
您可以f.hidden_field
在表单中使用来传递一些额外的计算值。
如果要分配current_user
票证,最好在单独分配中进行,并对其进行保护。