【发布时间】:2014-01-14 10:42:26
【问题描述】:
我有一个客户控制器和一个付款控制器。创建客户端后,我想自动重定向到新的付款表单,并将客户端 ID 传递给付款。
在客户端模型中:
has_many :payments
在支付模式中:
belongs_to :client
在客户端控制器中:
def create
@client = Client.new(client_params)
respond_to do |format|
if @client.save
format.html { redirect_to new_payment_url (:client_id => @client.id) }
format.json { render action: 'show', status: :created, location: @client }
else
format.html { render action: 'new' }
format.json { render json: @client.errors, status: :unprocessable_entity }
end
end
结束
在支付控制器中
def new
@payment = Payment.new
@client = Client.where(:id => params[:client_id])
end
当我创建客户端时,它会重定向到新的付款表单,但客户端 ID 未通过。当我尝试保存该付款时,我收到一条错误消息,提示客户端不能为空。
我知道你不能将一个对象传递给另一个控制器而不先保存它,但我的理解是: i)我不是试图通过整个客户端对象,只是 id 和 ii) @client.save 不将对象保存到数据库然后执行并执行以下代码行吗?
我对这一切有点困惑,所以任何帮助都将不胜感激。
【问题讨论】:
标签: ruby-on-rails model-view-controller ruby-on-rails-4