Довольно простой вопрос по 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