Rails 3: обновите несколько родителей при создании дочернего объекта на одном из родительских шоу
Я новичок в рельсах и пытаюсь учиться сейчас, надеюсь, кто-то может помочь.
У меня есть 3 модели для пользователя, мнения и голосования с отношениями один-ко-многим. каждый user has_many :opinions
а также has_many :votes
, каждый opinion has_many :votes
а также belongs_to :user
, каждый vote belongs_to user
а также belongs_to opinion
, Таблица голосов имеет столбцы для: решение (логическое),: мнение_ид и:user_id. Таблица мнений имеет только: столбец содержимого.
Мой вариант использования заключается в том, что пользователь добавляет свое мнение, и тогда другие пользователи могут либо согласиться, либо не согласиться с ним при просмотре каждого мнения (показать представление).
В представлении "Мнение" я хочу иметь две кнопки отправки с "Согласен" и "Не согласен". Когда пользователь отправляет голос, мне нужно создать этот голос (true или false) и обновить оба поля user_id и мнения_id таблицы голосов. Мне удалось сделать это для каждого родителя индивидуально, но не для обоих голосов. Любая помощь приветствуется.
1 ответ
Включите оба идентификатора как скрытые поля.
Мнение показать вид:
<%= form_for(@vote) do |f| %>
<%= f.hidden_field :user_id, :value => @user.id %>
<%= f.hidden_field :opinion_id, :value => @opinion.id %>
<%= submit_tag 'Agree', :name => 'agree_button' %>
<%= submit_tag 'Disagree', :name => 'disagree_button' %>
<% end %>`
Контроллер голосования:
def create
@vote = Vote.new(params[:vote])
if params[:agree_button]
@vote.agreement = 1
elsif params[:disagree_button]
@vote.agreement = -1
end
flash[:notice] = "Thank you for your vote." if @vote.save
redirect_to( opinion_path( @vote.opinion_id ))
end