0

我的Picture模型包含 2 个字段照片和描述(照片是来自 papperclip gem 的字段)

我已经PicturesController包含了新的创建编辑更新销毁和显示

我已经routes.rb通过使用声明resource :pictures并且有我的路线。

     pictures POST   /pictures(.:format)      pictures#create
 new_pictures GET    /pictures/new(.:format)  pictures#new
edit_pictures GET    /pictures/edit(.:format) pictures#edit
              GET    /pictures(.:format)      pictures#show
              PUT    /pictures(.:format)      pictures#update
              DELETE /pictures(.:format)      pictures#destroy

有我的查看代码

  # pictures/new.html.erb & pictures/edit.html.erb 
  <%= form_for @picture, :html => {:multipart => true} do |f| %>

      <div><%= f.label :photo %><br/>
        <%= f.file_field :photo %></div><br/>

      <div><%= f.label :description %><br/>
        <%= f.text_area :description %></div><br/>

      <%= f.submit :upload %>
  <% end %>

  # 

我在新建和编辑中使用相同的代码只是更改提交按钮标签。

new.html.erb工作正常(创建图片并将其保存到数据库中)。

但是错误出现在edit.html.erb

 undefined method `picture_path' for #<#<Class:0x007f830e93ad30>:0x007f830e92d5b8>

我已经检查过了@picture。为什么rails找不到图片类的更新路径?

我通过此链接遵循 form_for 指南。

任何想法?谢谢。

4

1 回答 1

2

你的多元化有问题。使用资源 :pictures 你应该有类似..

pictures     GET    /pictures(.:format)                    pictures#index
             POST   /pictures(.:format)                    pictures#create
new_picture  GET    /pictures/new(.:format)                pictures#new
edit_picture GET    /pictures/:id/edit(.:format)           pictures#edit
picture      GET    /pictures/:id(.:format)                pictures#show
             PUT    /pictures/:id(.:format)                pictures#update
             DELETE /pictures/:id(.:format)                pictures#destroy

注意图片元素上的单数..这将产生动态图片路径方法

更新:在你的路由文件中将'resource'更改为'resources',你应该没问题

于 2012-04-27T07:44:48.583 回答