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
Другие вопросы по тегам