【发布时间】:2012-11-12 11:32:23
【问题描述】:
我有一个简单的 Rails 3 应用程序,我正在尝试创建一个属于它所有者的新记录。它通过将 id 传递给子记录的新形式中的隐藏字段来工作。
这很好用,一旦提交了新的子表单,它就会在子/父关系中正确关联。
我想要做的是在新的子表单中从父表单中查找值。问题是尚未创建子关系。无论如何我可以在视图中使用 .where 查找吗?或者,有更好的方法吗?
目前,我将 animal_id 传递给新的索赔表单,并将其插入到标记为 animal_id 的隐藏字段中。
我想做什么:
<%= @animal.where(:animal_id => params[:animal_id]).id %>
理想情况下,上述方法会从即将关联的动物那里获取动物 ID。是否有任何类型的 before_filter 或任何可以从 URL 中获取传递的参数并为新表单视图临时创建关系,然后在提交表单后永久创建关系的任何东西?
我尝试将以下内容添加到我的 Claims 控制器,然后在视图中调用 @animal.AnimalName,但我得到 NoMethodError:
before_filter :find_animal
protected
def find_animal
if params[:animal_id]
Animal.find(params[:animal_id])
end
end
新声明的 URL 正确显示了动物 ID,所以我不确定为什么找不到它:
http://localhost:3000/claims/new?animal_id=1
模型关系如下:
animal has_many claims
animal has_one exclusion
claim has_one animal
exclusion has_one animal
更新
我已将我的关系更正如下:
animal has_one exclusion
exclusions belong_to animal
【问题讨论】:
标签: ruby-on-rails-3 model associations relationship