Rails 3嵌套资源变量
问题描述:
我有几个与我创建的Transaction对象有关的问题。Rails 3嵌套资源变量
交易belongs_to贷款和贷款has_many交易。
因此,我建立一个嵌套的路线:
resources :loans do
resources :transactions
end
我的问题是:我如何通过贷款价值为交易的“loan_id”字段?这是否最好在控制器中完成或作为表单中的隐藏字段?嵌套的路线是否创建了一个简单的方法来获取这个变量?
我认为这将会自动完成,但是当我按原样保存时该字段为空。
任何帮助将不胜感激!
答
如果你调用一个特定的事务,对于new
交易的路线将是
loans/:loan_id/transactions/new
你可以使用模型关联是这样的:在您的create
行动:
@transaction = Loan.find(params[:loan_id]).transactions.build
这样新@transaction
将已经填充loan_id
答
考虑将一个before_filter
添加到您的控件并让它调用一个私有方法来跨所有操作获取:id
。把这个在您的transactions
控制器的顶部:
before_filter :load_loan
所有动作后
,然后补充:
private
def load_loan
@loan.find(params[:loan_id])
end
使用它像这样在你的new
行动:
@transaction = @loan.transactions.build
我只是试过这个,我得到以下消息:无法找到没有ID的贷款。你为什么:loan_id没有被识别? – Justin 2011-05-18 21:15:57
确保您在贷款数据库中使用您试图拨打的loan_id。如果贷款的id = loan_id不存在 - 只有在您手动输入url时才会发生 – 2011-05-18 21:19:12
Loan存在,我通过'lend_button'%>是否正确?由于某些原因,它仍然会抛出错误。感谢您的帮助! – Justin 2011-05-18 21:33:35