将关联的模型ID传递给另一个表单

时间:2014-06-24 20:03:32

标签: ruby-on-rails ruby forms associations

我有以下关联设置

class Donation < ActiveRecord::Base
  belongs_to :campaign
end

class Campaign < ActiveRecord::Base
has_many :donations
end

在我的捐赠控制器中,我将campaign_id作为一个强大的参数。现在,在创建捐赠时,我希望将campaign_id保存在该表单中,但最好在控制器的某个地方,我猜测不太容易被编辑。要从广告系列转到捐赠表单,我点击一个按钮

<%= link_to 'Donate', new_donation_path, class: 'big-button green' %>

因为我们已经在使用

def show
  @campaign = Campaign.find(params[:id])
end

我怎样才能将这个身份证明纳入我的捐款表格?

由于

1 个答案:

答案 0 :(得分:1)

听起来你正在寻找Nested Resources

基本上,您的 routes.rb 可能类似于:

resources :campaigns do resources :donations end

您的控制器可能如下所示:

class DonationsController < ApplicationController
  before_action :find_campaign

  def new
    @donation = @campaign.donations.build
  end

  def create
    @donation = @campaign.donations.create(params[:donation])

    # ... 
  end

protected

  def find_campaign
    @campaign ||= Campaign.find(params[:campaign_id])
  end 
end

您的示例链接,类似于......

<%= link_to 'Donate', new_campaign_donation_path(@campaign), class: 'big-button green' %>