私は次の関係に 2 つのモデルを持っています: Client has_many products と Product belongs_to client です。クライアント ショー ビューでは、現在のクライアントに自動的に属する新しい製品を作成するためのフォームを提示します。クライアント コントローラの show メソッド
def show
@client = Client.find(params[:id])
@products = @client.products.paginate(page: params[:page])
@product = @client.products.new
@product.client_id = @client.id
end
ショービューは部分的にレンダリングします
<h1>New Product:</h1>
<%= render 'shared/product_form' %>
それは機能し、製品は正しく作成されます。
検証エラーが発生した場合、製品の create メソッドにフラッシュを設定し、redirect_to をクライアントの表示ページに設定します。そこで、正しく入力されたデータを失います。@product インスタンス変数を保存しようとしましたが、これにはすべてのデータ (間違ったフィールドを含む) が含まれています。
render client_path(client)
製品コントローラから、しかしそれはエラーを生成します
テンプレート /clients/17 がありません
アドレスは
http://localhost:3000/products
私はこれを間違って呼んでいますか?render は通常、同じコントローラーのアクションをレンダリングすることを知っています。どうにかして製品コントローラーから Client::show をレンダリングできますか? ユーザーが入力したデータを保存する別の方法はありますか?