Отсутствует Wiki_id для модели Collaborator

Я пытаюсь добавить соавторов в вики, но я не могу добавить 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 частично

<%= 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 ответа

Код для строительства @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 будет назначен автоматически!

Как упомянуто @Hieu pham wiki_id отсутствует в параметрах, но вы можете добавить wiki_id как

@wiki = Wiki.find(params[:wiki_id])
@collaborator = Collaborator.new(collaborator_params)
@collaborator.wiki_id = @wiki.id
@collaborator.save
.....

...
Другие вопросы по тегам