在另一个视图中使用局部时传递属性

时间:2015-06-25 15:47:56

标签: ruby-on-rails ruby devise

我有三个型号 - 公司,用户(使用设计)&捐赠.Donation是公司和用户之间的丰富联接,使用:through。 我有一个部分表格,用于在公司的展示视图中创建一个新的捐赠,它有三个属性 - company_id,user_id和金额。 视图中表单的代码如下:

<%= simple_form_for @donation do |f| %>
<div class="row">
  <div class="container">
    <div class="col-sm-6">
      <div class="well">
        <h1 align="center" class="amountHead">Donate</h1>
        <form class="form-inline donate-form">
          <div class="form-group">
            <div class="input-group">
              <div class="input-group-addon">&#8377;</div>
              <%= f.input :amount, label: false, placeholder: 'Amount in Rupees' %>
              <div class="input-group-addon">.00</div>
            </div>
          </div>
          <div class="actions" style="text-align: center">
            <%= f.submit :class => 'btn btn-success' %>
          </div>
        </form>
      </div>
    </div>

当用户输入金额时,如何使用当前用户的ID和他们正在查看的公司的ID来传递user_id和company_id。

donation_controller.rb

class DonationsController < ApplicationController
  def index
    @donations = Donation.all
  end

  def new
    @donation = Donation.new()
  end

  def create
    @donation = Donation.new(donation_params)

    respond_to do |format|
      if @donation.save
        format.html { redirect_to @donation, notice: 'Donation was successfully created.' }
        format.json { render :show, status: :created, location: @donation }
      else
        format.html { render :new }
        format.json { render json: @donation.errors, status: :unprocessable_entity }
      end
    end
  end

  def donation_params
    params.require(:donation).permit(:amount,:user_id,:company_id)
  end
end

company_controller.rb

def show
    @donation = Donation.new
  end

1 个答案:

答案 0 :(得分:1)

您可以hidden_field使用form user_idcompany_id

f.input :user_id, :as => :hidden, :input_html => { :value => current_user.id }
f.input :company_id, :as => :hidden, :input_html => { :value => @company.id }

您需要在@company = Company.find(params[:id]) show 方法中定义companies_controller