我有一个简单的 Rails 3 应用程序,我正在尝试创建一个属于它所有者的新记录。它通过将 id 传递给子记录的新形式中的隐藏字段来工作。
这很好用,一旦提交了新的子表单,它就会在子/父关系中正确关联。
我想要做的是在新的子表单中查找父表单的值。问题是尚未创建子关系。无论如何我可以在视图中使用 .where 查找吗?或者,有没有更好的方法来做到这一点?
目前,我将 animal_id 传递给新的 Claim 表单,并将其插入到标记为 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