这是一个我确信很容易解决的问题,部分归因于我自己缺乏知识,但我做了一些搜索,无法找到解决我问题的正确方法。
在我的情况下,我有一个Product类,它有很多Review对象。评论也属于用户。假设我已经正确定义了我的模型,我很难弄清楚如何正确地将:product_id变量传递到评论中,以便在提交时将给定的评论与给定的产品联系起来。
到目前为止,我所拥有的是一个显示产品信息的视图以及<%= link_to 'Review Product', new_review_path(:product_id => @product.id) %>
. 添加新评论的结果视图表单(旨在用于该产品)看起来至少有些正确,因为 URL 显示为http://localhost:3000/reviews/new?product_id=1。正如我所提到的,我已经完成了先前的搜索,并且已经提供了对我的问题的类似答案,但它并没有解决问题,因为当我显示@review
实例变量的值时,每个属性都是 nil。
在我的reviews_controller.rb文件中,我可以分配这些变量——至少在新操作的表单中,通过执行类似于以下的操作:
@review = Review.new(:product_id => params[:product_id])
我还可以通过执行类似的操作并传递current_user变量(由设计 gem 处理)来分配user_id变量。我知道 Rails 使用的创建操作通常会根据我读过的所有内容创建变量的新实例。但是,这样做会导致数据丢失,但我在表单中输入的变量除外。从技术上讲,我应该可以在create操作中传递current_user变量,但我无法传递(或不知道如何传递)product 变量。对于它的价值,我现在没有使用任何类型的嵌套路由,但我不知道这是否是一个直接的解决方案。
如果有人对我可以做些什么来解决这个问题有更好的了解,我将不胜感激。我敢肯定,正如我所暗示的,这是一个业余错误。
PS如果问题措辞尴尬,我深表歉意,因为我不确定描述它的最佳方式。