2015-06-25 3 views
0

У меня есть три модели - компания, пользователь (с помощью разработки) & Donation.Donation - это богатое соединение между компанией и пользователем, используя: через. У меня есть частичная форма для создания нового пожертвования внутри представления представления компании, которая берет три атрибута - 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> 

Как пройти 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

Вы можете использовать hidden_field в form для user_id и company_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]) в companies_controllerпоказать способ для этого.

+1

Спасибо ..... Это решило проблему !!! .... Я на самом деле думал, что мне нужно что-то делать в контроллерах ... но оказалось, что это взгляд. Очень простое и элегантное решение! !! –

+0

@HemantJain Примите ответ :) – Pavan

Смежные вопросы