Передача user_id, site_id и question_id в одну и ту же таблицу при создании - PullRequest
1 голос
/ 20 мая 2010

Кажется, я не могу понять, как это сделать. Я пытаюсь передать четыре разных переменных в одну таблицу. Чтобы быть более конкретным, я пытаюсь создать «лайк» в таблице лайков, которая также фиксирует site_id (как ответ), user_id и question_id. Вот установка.

class Like < ActiveRecord::Base
  belongs_to :site
  belongs_to :user
  belongs_to :question
end

Я избавлю вас от обратного, has_many ассоциации, но они есть. Вот контроллер лайков, где, я думаю, проблема.

class LikesController < ApplicationController

  def create
    @user = current_user
    @site = Site.find(params[:site_id])
    @like = @site.likes.create!(params[:like])
    @like.user = current_user
    @like.save

    respond_to do |format|
     format.html { redirect_to @site}
     format.js
     end
  end
end

Этот код успешно передает like и site_id, но после многих различных попыток я не могу заставить его передать идентификатор вопроса. Вот моя форма:

/ views / sites / _site.html.erb (хотя частичное отображается в файле /views/questions/show.html.erb).

<% remote_form_for [site, Like.new] do |f| %>
        <%= f.hidden_field :site_name, :value => "#{site.name}" %>

        <%= f.hidden_field :ip_address, :value => "#{request.remote_ip}" %>
        <%= f.hidden_field :like, :value => "1" %>
        <%= submit_tag "^" , :class => 'voteup' %>
    <% end %>

Ответы [ 2 ]

0 голосов
/ 20 мая 2010

У вас, кажется, нет ввода для вашего question_id в вашем remote_form_for. Это правильно?

Если это так, вам нужно либо передать текущий вопрос вашему remote_form_for, либо явно включить скрытое поле, в котором хранится идентификатор вашего вопроса.

Например:

<% remote_form_for [@question, site, Like.new] do |f| %>
0 голосов
/ 20 мая 2010
<%= f.hidden_field :question_id, :value => params[:id] %> 

или

<%= f.hidden_field :question_id, :value => @question.id %> 

Попробуйте эту строку внутри формы, так как вы сказали, что находитесь на странице показа вопросов, у параметров [: id] будет идентификатор вопроса.

Если я неправильно понял ваш вопрос, пожалуйста, дайте мне знать.

...