Rails 4 嵌套资源表单的 LocalJumpError

Rails 4 LocalJumpError for nested recourse form

我在另一个资源 "budgets" 中有一个名为 "transactions" 的嵌套资源 "budgets"。

我想要完成的只是让我的用户能够编辑个人 "transactions"。然而,当我转到 /1/transactions/1/edit 时,我得到一个 LocalJumpError 说 "no block given (yield)"。 可能有一个非常简单的解决方案,但我还没有找到它。

routes.rb:

resources :budgets, :path => '/' do
  resources :transactions
end

budget.rb:

class Budget < ActiveRecord::Base
  belongs_to :user
  has_many :transactions

  validates :amount, presence: true
  validates :title, presence: true
  validates :user, presence: true
  validates :amount, numericality: true

  extend FriendlyId
  friendly_id :title, use: :slugged

  def should_generate_new_friendly_id?
    new_record?
  end
end

transaction.rb

class Transaction < ActiveRecord::Base
  belongs_to :user
  belongs_to :budget

  validates :amount, presence: true
  validates :user, presence: true
  validates :budget, presence: true
  validates :date, presence: true
  validates :amount, numericality: true
  validates :is_positive, :inclusion => {:in => [true, false]}
end

transactions_controller.rb

  def edit
    @budget = Budget.friendly.find(params[:budget_id])
    @transaction = @budget.transaction
  end

并且在视图中 transactions/edit.html.erb:

<%= form_for(@transaction) do |f| %>

我错过了什么?

命名模型事务与 ActiveRecord::Transactions 冲突。您需要重命名您的模型。

http://api.rubyonrails.org/classes/ActiveRecord/Transactions/ClassMethods.html