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
我在另一个资源 "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