如何在fields_for块中获取对象的id?

时间:2015-05-26 12:34:16

标签: ruby-on-rails ruby-on-rails-4

我有一个类似的表格:

=form_for @client do |c|
  =c.label :name
  =c.text_Field :name
  =c.fields_for :places do |p|
    =link_to p.object.location, edit_client_location_path(@client, p.object.id)
    =p.text_field :status

link_to应该打开一个窗口弹出窗口,其中包含表places中的其他字段,因此我要求id中的edit_client_location_path字段包含在id中},但我收到 =link_to p.object.id, '#' =p.text_field :status 为零的错误。

奇怪的是,如果我用它替换它:

link_to

...我确实在视图中打印了id。如果我将其包含在 -id=p.object.id =link_to p.object.location, edit_client_location_path(@client,id) =p.text_field :status 中,并且对于任何其他属性也会出现相同的错误,则只会发生此错误。

我试图将id保存在一个变量中:

p.object.id.dup

但我也得到一个错误,它是零。如果我尝试使用 =link_to p.object.location, "/clients/#{@client.id}/location/#{p.object.id}/edit" ,我会收到Fixnum无法复制的错误。我很困惑。

我错过了什么?有没有更好的方法来访问ID?

更新

作为一种解决方法,我现在正在使用

p

出于某种原因,link_to内的errorMessages= error404Find: "Hosts not found" error404FindByHost: "Host - #{hostName} - not found" error400: "No host" 将为零。我不知道我的应用程序中是否有其他内容正在执行此操作,我将在稍后的干净设置中尝试复制此内容。

1 个答案:

答案 0 :(得分:0)

你试过这个吗?

edit_client_location_path(@client, p.object)