0

Rails 3 (および一般的な Rails) は初めてです...友人のバンドのサイト スケルトンを作成しましたが、彼は自分のサイトに記事を追加したいと考えています...

これまでに作成したのはページ (ホーム、ショー、メディア、連絡先) とヘッダーとフッターのパーシャルだけでした。

これまでに記事を追加するために行ったことは次のとおりです。

rails g scaffold article title:string body:text
rake db:migrate

しかし、localhost:3000/articles にアクセスすると、次のエラー メッセージが表示されます。

ActionController::RoutingError in Articles#new
no route matches {:action=>"home", :controller=>"articles"}

app/views/layouts/ _header.html.erbの 28 行目でエラーが発生したことが示されています。

25:   <h1>Title</h1>  
26: <ul id="nav">
27: <ul>
28:         <li><%= link_to image_tag("home.jpg",:class=> 'hoverImages'), :action => 'home' %></li>
29:         <li><%= link_to image_tag("shows.jpg", :class=> 'hoverImages'), :action => 'shows' %></li>
30:         <li><%= link_to image_tag("media.jpg", :class=> 'hoverImages'), :action => 'media' %></li>
31:         <li><%= link_to image_tag("contact.jpg", :class=> 'hoverImages'), :action => 'contact' %></li>

ここに私のroutes.rbがあります

CsmlSite::Application.routes.draw do

resources :articles

match '/shows', :to => 'pages#shows'
match '/media', :to => 'pages#media'
match '/contact', :to => 'pages#contact'
match '/articles', :to => 'articles#index'
root :to => "pages#home"

end

localhost:3000/articles を表示できないのはなぜですか? 役立つヒントがあれば、ぜひお寄せください。

編集:これが私のrake routeタスクの出力です

root        /(.:format)                  {:controller=>"pages", :action=> "home"}
articles GET    /articles(.:format)          {:action=>"index", :controller=>"articles"}
POST   /articles(.:format)          {:action=>"create", :controller=>"articles"}
new_article GET    /articles/new(.:format)      {:action=>"new", :controller=>" articles"}
edit_article GET    /articles/:id/edit(.:format) {:action=>"edit", :controller=>"articles"}
article GET    /articles/:id(.:format)      {:action=>"show", :controller=>"articles"}
PUT    /articles/:id(.:format)      {:action=>"update", :controller=>"articles"}
DELETE /articles/:id(.:format)      {:action=>"destroy", :controller=>"articles"}
shows        /shows(.:format)             {:controller=>"pages", :action=>"shows"}
media        /media(.:format)             {:controller=>"pages", :action=>"media"}
contact        /contact(.:format)           {:controller=>"pages", :action=>"contact"}
contacts POST   /contacts(.:format)          {:action=>"create", :controller=>"contact_us/contacts"}
new_contact GET    /contacts/new(.:format)      {:action=>"new", :controller=>"contact_us/contacts"}
contact_us        /contact_us(.:format)        {:action=>"new", :controller=>"contact_us/contacts"}`
4

2 に答える 2

0

:action: の代わりにパスを使用してビューを書き換えます。

<h1>Title</h1>  
<ul id="nav">
  <li><%= link_to image_tag("home.jpg",:class=> 'hoverImages'), root_path %></li>
  <li><%= link_to image_tag("shows.jpg", :class=> 'hoverImages'), shows_path %></li>
  <li><%= link_to image_tag("media.jpg", :class=> 'hoverImages'), media_path %></li>
  <li><%= link_to image_tag("contact.jpg", :class=> 'hoverImages'), contact_path %></li>
</ul>

そして、あなたのルートでもう1つ:

CsmlSite::Application.routes.draw do

  root :to => "pages#home"

  resources :articles

  match '/shows', :to => 'pages#shows'
  match '/media', :to => 'pages#media'
  match '/contact', :to => 'pages#contact'

  # the route below is not necessary (it is generated by `resources :articles`)
  # match '/articles', :to => 'articles#index'

終わり

于 2012-05-17T20:18:15.080 に答える
0

Nvm...それを理解しました。私のルートは、私がインストールした宝石と競合していました...具体的にはgem 'contact_us', '~> 0.2.0'.

そのgemを削除すると、shows_pages_pathetを使用できるようになりました。全て

于 2012-05-19T21:49:56.053 に答える