【发布时间】:2010-05-20 06:08:58
【问题描述】:
我似乎无法弄清楚如何做到这一点。我正在尝试将四个不同的变量传递给一个表。更具体地说,我试图在一个喜欢表中创建一个“喜欢”,该表还捕获 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 %>
【问题讨论】:
-
我建议你不要在表单中传递 request.ip_address,而是在控制器中获取它,因为它可能容易被伪造
标签: ruby-on-rails ruby associations