将user_id,site_id和question_id传递给create上的同一个表

时间:2010-05-20 06:08:58

标签: ruby-on-rails ruby associations

我似乎无法弄清楚如何做到这一点。我试图将四个不同的变量传递给一个表。更具体地说,我试图在like表中创建一个“like”,它也捕获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,但在尝试了许多不同的变体后,我无法通过问题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 :(得分:0)

<%= f.hidden_field :question_id, :value => params[:id] %> 

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

在你的表单中尝试这一行,就像你说你在问题的显示页面中一样,params [:id]将具有问题的id。

如果我误解了你的问题,请告诉我。

答案 1 :(得分:0)

question_id中的remote_form_for似乎没有输入。这是对的吗?

如果是这样,您需要将当前问题传递给remote_form_for,或明确包含存储您的question_id的隐藏字段。

例如:

<% remote_form_for [@question, site, Like.new] do |f| %>