Отсутствует 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
.....
...