在我的 Ruby on Rails 应用程序中,每个组都有_many :expenses。我已经嵌套了路线,因此费用仅作为其父组的子实体输入。这是 routes.rb 的摘录。
resources :groups do
resources :expenses
end
如果通过 /groups/:group_id/expenses/new 提交的费用未节省,我无法弄清楚如何呈现“新”操作。在我的费用_controller.rb 中,创建操作的定义如下:
def create
@expense = Expense.new(params[:expense])
@expense.group_id = params[:group_id]
if @expense.save
redirect_to group_expense_path(@expense.group.id, @expense.id)
else
render 'new'
end
end
如果我满足费用验证并且@expense.save 结束工作,一切都会正常工作。但是,当它失败并且代码尝试呈现“新”时,我得到:
undefined method `expenses_path' for #<#<Class:0x007fd408b1fd58>:0x007fd408f21ca8>
所以,我假设我的嵌套路由有问题。如何将用户返回到新表单,但仍通过 flash[] 参数向他/她显示他们最初尝试提交的数据的错误?