目前,我有一个属于Subscriber
的{{1}}模型和Comments
模型。现在我需要将两个模型链接在一起,以便我的Subscriber
上有许多Subscriber
。我想要的是如果我在控制台中写这个,我会得到我的答案 - > comments
现在返回nil,因为它不知道如何找到离开评论的订阅者的ID。如何为应用程序提供正确的代码,以便我可以将这两者联系起来?为了清楚起见,我会发布代码。
控制器:
Subscriber.find(1).comments.first
正如您所看到的,我在创建评论时试图找到:subscriber_id。这就是我的问题所在。我该如何连接
错误:
模特:
class CommentsController < ApplicationController
def new
@comment = Comment.new
end
def create
@subscriber = Subscriber.find(params[:subscriber_id])
@comment = @subscriber.comments.build(comments_params)
if @comment.save
flash[:notice] = "Thank you!"
redirect_to subscribers_search_path(:comments)
else
render "new"
end
end
private
def comments_params
params.require(:comment).permit(:fav_drink, :subscriber_id)
end
end
我应该清楚的另一个方面是我没有当前的订阅者,因为这个应用程序用于检查客户,因此应用程序不会记录用户只是用他们的电话号码检查它们。如果您需要更多信息,请告诉我。
视图:
class Comment < ActiveRecord::Base
belongs_to :subscriber
end
class Subscriber < ActiveRecord::Base
has_many :comments
end
答案 0 :(得分:1)
方法1
您的订阅者ID位于参数中的comment
哈希值内。所以你需要找到像这样的订户
@subscriber = Subscriber.find(params[:comment][:subscriber_id])
#If you're taking this approach, you need to remove :subscriber id from your comment_params
Lik this
def comment_params
params.require(:comment).permit(:fav_drink)
end
#@subscriber.comments.build will take care of the subscriber_id field for you, so its pointless rewriting it
方法2
或者您直接创建评论。
@comment = Comments.new(comments_params)
#notice this already has, the subscriber_id, so we don't need to find
#subscriber and then do build on it
如果有帮助,请告诉我