Ruby on rails Rails:从表单发布到M:M表
在“组索引”页面上,我显示了组讨论列表和创建新讨论的表单Ruby on rails Rails:从表单发布到M:M表,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,在“组索引”页面上,我显示了组讨论列表和创建新讨论的表单 class Group < ActiveRecord::Base has_many :discussions end class Discussion < ActiveRecord::Base belongs_to :user belongs_to :group end 我可以在params集合中看到组id在那里,但在散列之外。正如我所说,您需要像这样调整创建操作,以便保存组id def create @gro
class Group < ActiveRecord::Base
has_many :discussions
end
class Discussion < ActiveRecord::Base
belongs_to :user
belongs_to :group
end
我可以在params集合中看到组id在那里,但在散列之外。正如我所说,您需要像这样调整
创建操作,以便保存组id
def create
@group = Group.find(params[:group_id])
@discussion = current_user.discussions.build(discussion_params)
@discussion.group_id = @group.id
if @discussion.save
flash[:success] = "Discussion started."
redirect_to root_url
end
end
或
您可以在表单中为添加隐藏的\u字段
,这样保存组id
<%= f.hidden_field :group_id, :value => @group.id %>
您还需要将组id
添加到您的讨论参数中
def discussion_params
params.require(:discussion).permit(:title, :content, :group_id)
end
是的,这完全是Rails的做法。请发布您的参数日志
发布控制器的新方法!参数:{“utf8”=>“✓", "真实性令牌“=>”Ci5uQOPaRlef6HcCYln/Ks6Ykraqqms8ysCLAa3sG1NiuyzTXLcM3j8CbJKexnqRT4h1hV79uyQ2Jv3FXsf9Bw==”,“讨论”=>{“标题”=>“测试1”,“内容”=>“测试2”},“提交”=>“发布”,“组id”=>“635601”}没有新操作。该对象是在索引操作中生成的。您是否尝试将@group=group.find(params[:group\u id])
添加到您的创建操作中,并像@discussion.group\u id=@group.id
那样操作?非常好。谢谢你的帮助。我已经实现了前者,因为如果不需要的话,我不愿意创建一个隐藏字段。对于隐藏字段,我不需要“@group=group.find(params[:group_id])”是否?@user1567212您应该需要它才能为隐藏字段添加值,即:value=>@group.id
@user1567212对不起。我想你不需要它。
def create
@group = Group.find(params[:group_id])
@discussion = current_user.discussions.build(discussion_params)
@discussion.group_id = @group.id
if @discussion.save
flash[:success] = "Discussion started."
redirect_to root_url
end
end
<%= f.hidden_field :group_id, :value => @group.id %>
def create
@group = Group.find(params[:group_id])
@discussion = current_user.discussions.build(discussion_params)
if @discussion.save
flash[:success] = "Discussion started."
redirect_to root_url
end
end
def discussion_params
params.require(:discussion).permit(:title, :content, :group_id)
end