Ruby on rails 3 Rails 3嵌套的资源变量

Ruby on rails 3 Rails 3嵌套的资源变量,ruby-on-rails-3,nested-routes,Ruby On Rails 3,Nested Routes,我有一些关于我正在创建的事务对象的问题 交易属于贷款,贷款有很多交易 因此,我设置了一个嵌套路由: resources :loans do resources :transactions end 我的问题是:如何将贷款价值传递到交易的“loan_id”字段中?这最好是在控制器中完成,还是作为表单中的隐藏字段完成?嵌套路由是否创建了获取此变量的简单方法 我假设这会自动完成,但当我按原样保存时,字段是空的 任何帮助都将不胜感激 如果调用特定事务,则新事务的路由将为 loans/:loan_id

我有一些关于我正在创建的事务对象的问题

交易属于贷款,贷款有很多交易

因此,我设置了一个嵌套路由:

resources :loans do
  resources :transactions
end
我的问题是:如何将贷款价值传递到交易的“loan_id”字段中?这最好是在控制器中完成,还是作为表单中的隐藏字段完成?嵌套路由是否创建了获取此变量的简单方法

我假设这会自动完成,但当我按原样保存时,字段是空的


任何帮助都将不胜感激

如果调用特定事务,则
新事务的路由将为

loans/:loan_id/transactions/new
您可以这样使用模型关联:在
create
操作中:

@transaction = Loan.find(params[:loan_id]).transactions.build
@transaction = @loan.transactions.build

这样,您的新
@事务将已填充贷款id

请考虑在控制器中添加一个
过滤器,并让它调用一个私有方法,以便在所有操作中获取
:id
。将其放在
事务
控制器的顶部:

before_filter :load_loan
然后在所有操作之后,添加:

private
def load_loan
  @loan.find(params[:loan_id])
end
在您的
新操作中这样使用它:

@transaction = Loan.find(params[:loan_id]).transactions.build
@transaction = @loan.transactions.build

我刚刚尝试了这个,我得到了以下消息:没有ID就找不到贷款。您知道:Loan\u ID无法识别的原因吗?请确保数据库中有一个贷款,该贷款具有您尝试调用的:Loan\u ID。如果id=Loan\u id的贷款不存在,调用find on Loan将引发异常-只有手动键入url时才会发生这种情况贷款存在并且我正在使用“Loan\u按钮”%>链接到它,对吗?出于某种原因,它仍在抛出错误。谢谢你的帮助!链接正确(操作
新建
,用于
@loan
中的交易)。什么时候抛出错误?在
新建
创建
操作中?如果
放入参数[:loan\u id]
,将打印什么?是被调用贷款的
id
吗?提交新交易表单后立即抛出错误,标题为ActiveRecord::RecordNotFound in TransactionController#create。所以,它在create方法中。参数[:loan_id]中似乎没有任何内容。出于某种原因,我认为这两者没有联系。除了上面提到的路线之外,我还有什么需要补充的吗?再次感谢,我真的很感谢你的帮助!