我正在做一个简单的CRUD,我对edit/update有一个问题。我的表单是这样的:
= simple_form_for @receipt do |f|
= render 'shared/error_messages', object: @receipt
= f.input :purchase_date, as: :string, input_html: {'data-provide' => 'datepicker'}
= f.input :amount, as: :string, input_html: {'data-provide' => 'datepicker'}
= f.association :store因此,对于新的行动,我的看法是:
h2 Create new receipt
= render 'form'我在新的控制器操作中初始化我的@receipt实例变量。但是,当我尝试编辑时,这是编辑视图的内容:
h2 Edit receipt
= render 'form'我知道这个错误:
undefined method `receipt_path' for #<#<Class:0x007f943b6f3750>:0x007f943d5ce5d0>在form部分的第一行。我的路线就是这样:
resource :receipts do
collection do
get :index
end
end奇怪的是,在我没有添加get :index的情况下,索引的路由不会生成,这是我的rake routes的输出,在资源下的集合中有索引:
receipts GET /receipts(.:format) receipts#index
POST /receipts(.:format) receipts#create
new_receipts GET /receipts/new(.:format) receipts#new
edit_receipts GET /receipts/edit(.:format) receipts#edit
GET /receipts(.:format) receipts#show
PATCH /receipts(.:format) receipts#update
PUT /receipts(.:format) receipts#update
DELETE /receipts(.:format) receipts#destroy我的意思是,我可以将url传递给编辑和新表单,这将使它工作,我想。以前是多余的。
我的问题是,我在这里做错了什么,这是我使用rails 4的第一个项目,这是rails 4吗?
更新每个注释的实例变量,而不是使用控制器中的实例变量,而是将新的局部变量传递给部分,如下所示:
= render 'form', object: @receipt并从偏袒改为:
= simple_form_for object do |f|仍然得到与实例变量相同的结果。
发布于 2015-05-29 17:26:18
将resource替换为resources并删除get :index。它可能会解决你的问题
发布于 2015-05-28 07:03:32
请将resource :receipts替换为resources :receipts,希望这将解决您的问题。
另外,您不需要添加get "index"操作,因为resources关键字it self提供CRUD操作,如(索引、新的、编辑等)。
https://stackoverflow.com/questions/30495929
复制相似问题