Rails: создать действие для связанных моделей - PullRequest
0 голосов
/ 26 марта 2012

Довольно простой вопрос по Rails, но я не могу понять простоту Rails.

Моя простая цель - попросить пользователя отправить форму с указанием суммы пожертвования и связать это пожертвование с пользователем. У меня проблемы с действием create в donations_controller.rb

У меня есть модель User.rb и модель Donation.rb. User.rb has_one :donation и Donation.rb belongs_to :user. Я также использую Devise, поэтому у меня есть метод current_user.

Мой стол для пожертвований выглядит так

class CreateDonations < ActiveRecord::Migration
  def change
    create_table :donations do |t|
      t.integer :amount
      t.integer :user_id

      t.timestamps
    end
    add_index :donations, [:user_id, :created_at]
  end
end

_form.html.erb для donations_controller.rb выглядит следующим образом

<%= form_for @donation do |f| %>

  <div class="field">
    <%= f.number_field :amount %>
  </div>
  <div class="actions">
    <%= f.submit "Submit" %>
  </div>
<% end %>

Действие create в donations_controller.rb выглядит следующим образом

def create
    @donation  = current_user.donation.build(params[:donation])
    if @donation.save
      flash[:success] = "Donation"
      redirect_to root_path
    else
      render 'home/index'
    end
  end

Я получаю это сообщение об ошибке при отправке формы.

NoMethodError in DonationsController#create

undefined method `build' for nil:NilClass

1 Ответ

0 голосов
/ 26 марта 2012

Метод построения ассоциации has_one: current_user.build_donation(params[:donation])

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...