我在以下关系中有两个模型: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' %>
这有效,产品被正确创建。
当发生验证错误时,我在产品创建方法中设置了一个 flash 并重定向到客户端显示页面。在那里,我丢失了已正确填写的数据。我尝试保存 @product 实例变量,其中包含所有数据(包括错误的字段)
render client_path(client)
来自产品控制器,但这会产生错误
缺少模板 /clients/17
地址是
http://localhost:3000/products
我说错了吗?我知道渲染通常会渲染同一个控制器的动作。我可以从产品控制器以某种方式呈现 Client::show 吗?是否有另一种方法来保存用户输入的数据?