缺少Wiki_id到Collaborator模型

时间:2016-04-23 06:20:58

标签: ruby-on-rails ruby partial

我正在尝试将协作者添加到wiki中,但我似乎无法将wiki_id添加到协作者模型中。我错过了什么,我将_form部分渲染到维基节目视图中。

我一直在

<Collaborator id: 20, user_id: 9, wiki_id: nil,  > 

协作者_controller

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 %>

2 个答案:

答案 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
.....

...