0

私はPictureそれが2つのフィールドの写真と説明を含むモデルを持っています(写真はpapperclip宝石からのフィールドです)

そして私は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ます。レールがPictureクラスの更新パスを見つけられないのはなぜですか?

このリンクで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

動的なpicture_pathメソッドを生成するpicture要素の特異点に注意してください。

更新:ルートファイルの「resource」を「resources」に変更すると、問題がないはずです。

于 2012-04-27T07:44:48.583 に答える