0

これはstackoverflowに対する私の最初の質問であり、自分でバグを修正できなかったのは少し気が遠くなるような気がしますが、ここで説明します。

ページインデックスのリンクを編集アクションに接続しようとすると、次のエラーが発生します。

No route matches {:action=>"edit", :controller=>"pages"}

だから明らかに私は最初にコントローラーをチェックしました-そこには間違いなく編集アクションがあります!

これが私の関連するレーキルートの出力です:

      pages GET    /pages(.:format)          pages#index
            POST   /pages(.:format)          pages#create
   new_page GET    /pages/new(.:format)      pages#new
  edit_page GET    /pages/:id/edit(.:format) pages#edit
       page GET    /pages/:id(.:format)      pages#show
            PUT    /pages/:id(.:format)      pages#update
            DELETE /pages/:id(.:format)      pages#destroy

そして私のconfig/routers.rb:

  Portfolio::Application.routes.draw do
  resources :pages
  resources :sessions, only: [:new, :create, :destroy]
  resources :users

  root to: 'pages#home'

  match '/signup',   to: 'users#new'
  match '/signin',   to: 'sessions#new'
  match '/signout',  to: 'sessions#destroy', via: :delete
  match '/admin',    to: 'admin#index'
  match '/new',      to: 'pages#new'
  match '/edit',     to: 'pages#edit'

  match '*path', :controller => 'redirect', :action => 'index'

そして万が一の場合に備えて、コントローラーのアクション。

  def edit
    @page = Page.find(params[:id])
  end

パスと呼ばれるビューも提供すると思いました。

 <% Page.where("parent_id IS NULL").each do |page| %>
   <li>
     <%= link_to page.title, page %>
     <%= link_to "Edit", page, edit_page_path  %>
     <%= link_to "Delete", page, method: :delete,
                                 data: { confirm: "You sure?" } %>
   </li>
 <% end %>

私はタイプミスが見られないというひどい習慣を持っているので、もし私がばかげたタイプミスを作ったとしたら、それは私がこれを修正できない理由を説明するでしょう。

どんな助けでもいただければ幸いです。

ありがとう!

4

2 に答える 2

1

試す:

 <%= link_to "Edit", edit_page_path(page)  %>

ルートの出力を詳しく見ると、次のようになります。

edit_page GET    /pages/:id/edit(.:format) pages#edit

ルート edit_page には、:id を渡す必要があります。

于 2012-07-26T09:22:02.080 に答える
0

編集リンクは次のように生成する必要があります

<%= link_to "Edit", edit_page_path(page) %>

Erezが指摘したように、:idから取得されるが必要ですpage

引数を渡すための可能な方法については、 link_to署名を確認してください。1番目/2番目の引数はforurlまたはurl_options3番目の引数はforhtml_optionsです。

于 2012-07-26T09:31:23.717 に答える