我正在尝试将协作者添加到wiki中,但我似乎无法将wiki_id添加到协作者模型中。我错过了什么,我将_form部分渲染到维基节目视图中。
我一直在
<Collaborator id: 20, user_id: 9, wiki_id: nil, >
def create
@wiki = Wiki.find(params[:wiki_id])
@collaborator = @wiki.collaborators.build(collaborator_params)
if @collaborator.save
flash[:notice] = "You Added a collaborator"
else
flash[:alert] = "Was not about to add collaborator. Please try again"
end
redirect_to wiki_path(@wiki)
end
def collaborator_params
params.require(:collaborator).permit(:user_id, :wiki_id)
end
_form partial
<%= form_for [wiki, collaborator] do |f| %>
<div class="form-group">
<%= f.label :Premium %>
<%= f.select :user_id, options_from_collection_for_select(User.premium, "id", "username") %>
<%= f.submit "Save", class: 'btn btn-default' %>
</div>
<% end %>
答案 0 :(得分:1)
构建@collaborator
的代码应为:
如果关系为wiki has_one collaborator
:
@collaborator = @wiki.build_collaborator(collaborator_params)
如果关系为wiki has_many collaborators
:
@collaborator = @wiki.collaborators.build(collaborator_params)
由于我认为代码中的collaborator_params
缺少wiki_id
参数,因此您的新协作者缺少wiki_id
。轻松一点,使用build_collaborator
构建新的协作者,wiki_id
将自动分配!
答案 1 :(得分:0)
喜欢 @Hieu pham wiki_id在params中缺少,但你可以添加wiki_id之类的
@wiki = Wiki.find(params[:wiki_id])
@collaborator = Collaborator.new(collaborator_params)
@collaborator.wiki_id = @wiki.id
@collaborator.save
.....
...