Rails 3: обновите несколько родителей при создании дочернего объекта на одном из родительских шоу - PullRequest
1 голос
/ 20 июля 2011

Я новичок в рельсах и пытаюсь учиться сейчас, так что, надеюсь, кто-то может помочь.

У меня есть 3 модели для пользователя, мнения и голосования с отношениями один-ко-многим.Каждый user has_many :opinions и has_many :votes.Каждый opinion has_many :votes и belongs_to :user.Каждый vote belongs_to user и belongs_to opinion.Таблица голосов имеет столбцы для: решение (логическое),: мнение_ид и: user_id.Таблица мнений имеет только: столбец содержимого.

Мой вариант использования заключается в том, что пользователь добавляет свое мнение, а затем другие пользователи могут соглашаться или не соглашаться с ним при просмотре каждого мнения (представление в виде представления).

В представлении «Мнение» я хочу иметь две кнопки отправки с «Согласен» и «Не согласен».Когда пользователь отправляет голос, мне нужно создать этот голос (истина или ложь) и обновить поля user_id и мнения_ид таблицы голосования.Мне удалось сделать это для каждого родителя индивидуально, но не для обоих голосов.Любая помощь приветствуется.

1 Ответ

0 голосов
/ 20 июля 2011

Включите оба идентификатора как скрытые поля.

Мнение просмотра:

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