我有一个名为影院的模型,用于在影院上存储信息。
我根据用户搜索的邮政编码列出了影院。然后,用户可以点击单个剧院并显示评论。如果他们已登录,则可以添加评论。
所以我的模特是:
Theatres has_many reviews
用户有很多评论
评论属于用户并且有一个影院
提交新评论时,我这样做(@theater_id通过添加评论提交按钮作为参数传递):
def create
@user_id = current_user
@review = Review.create(review_params.merge(:user_id => @user_id,:theater_id => @theater_id))
if @review.save
redirect_to @review
else
render 'edit'
end
end
我觉得因为我的关联,有一个更容易更正确的方法来做到这一点。就像rails应该自动输入我当前的用户ID和影院ID ...对吗?
由于
答案 0 :(得分:0)
嵌套资源
我不知道您的routes
是如何设置的,但这通常属于nested resources范围内,reviews
对象将在{{1}下创建对象:
theatre
当您使用这样的路由时,它会在#config/routes.rb
resources :theatres do
resources :reviews #-> domain.com/theatres/1/reviews/new
end
中设置一个名为controller
的额外参数,您可以使用该参数填充新的theatre_id
对象:
Review
-
或者,您可以设置新#app/controllers/reviews_controller.rb
Class ReviewsController < ApplicationController
def create
@review = Review.new(review_params)
@review.save
end
private
def review_params
params.require(:review).permit(:your, :params).merge(theatre_id: params[:theatre_id]
end
end
对象的theatre
对象:
ActiveRecord