簡単な Rails 3 アプリケーションがあり、その所有者に属する新しいレコードを作成しようとしています。子レコードの新しいフォームの非表示フィールドに id を渡すことで機能しています。
これはうまく機能し、新しい子フォームが送信されると、子/親の関係で正しく関連付けられます。
私がやろうとしているのは、新しい子フォーム内の親からのルックアップ値です。問題は、子関係がまだ作成されていないことです。ビューで .where ルックアップを使用できる方法はありますか? または、これを行うより良い方法はありますか?
現時点では、animal_id を新しい Claim フォームに渡していますが、animal_id というラベルの付いた隠しフィールドに挿入されています。
私がやろうとしていること:
<%= @animal.where(:animal_id => params[:animal_id]).id %>
上記は理想的には、すぐに関連付けられる動物から動物 ID を取得します。渡されたパラメーターを URL から取得し、一時的に新しいフォーム ビューの関係を作成し、フォームが送信されると関係を永続的に作成できるような before_filter などはありますか?
以下を 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