0

私のインデックスビューでは、表示されるニュースの量を最新の2つに制限しています。

しかし、データベース内のすべてのニュースへのリンクも含めたいです

私のニュースコントローラーで私は持っています

def index
    @news = News.all(:order => "created_at DESC", :limit => 2)
end

そして私は私にすべてのニュースを与えるために別の方法を作りました

def all
  @news_all = News.all(:order => "created_at DESC")
end

代わりに、ビュー内の投稿の数を制限する必要がありますか?

これが私がすべてのニュースを表示するために作ったリンクです

<%= link_to 'All News', all_news_path =>

と私のcustumルート

match "news/all" => "news#all", :as => "all_news"

NewsController#show私はニュースを見つけることができないエラーを取得しますid="all"

私はルビーに非常に新しいです、そして私はこれを達成する方法がわかりません:)

アップデート

Kienが提案したようにコードを更新しました

私のルートで使用されたコレクション

resources :news do
  collection do
    get 'all'
  end
end

すべてのニュースへの私のインデックスリンク

<%= link_to 'All news', all_news_path, :class => 'btn btn-mini btn-success' %>

と私はall.html.erbビューを持っています

<% @news_all.each do |news| %>
  <h2><%= news.title %></h2>
  <%= news.created_at.strftime("%Y-%m-%d %H:%M") %><br />
  <%= truncate(news.body, :length => 450) %><%= link_to ' meira', news %>
  <%= news.author %><br />
<% end %>

これは昨日はうまくいきましたが、今日はgitからプルしundefined local variable or method all_news_pathて、インデックスファイルのリンクにアクセスします。

誰もが理由を見ることができますか?

ルート

                       root        /                                               news#index
             all_news_index GET    /news/all(.:format)                             news#all
                 news_index GET    /news(.:format)                                 news#index
                            POST   /news(.:format)                                 news#create
                   new_news GET    /news/new(.:format)                             news#new
                  edit_news GET    /news/:id/edit(.:format)                        news#edit
                       news GET    /news/:id(.:format)                             news#show
                            PUT    /news/:id(.:format)                             news#update
                            DELETE /news/:id(.:format)                             news#destroy
4

1 に答える 1

1

そのようなルートを作成すると、showルートと競合します。

news/:id
news/all

ルートall:idパラメータであると誤解します。

コレクションを使用する必要があります:

resources news do
  collection do
    get 'all'
  end
end

route: を取得しますall_news_path。すべてのニュースを表示するall.html.erbには、フォルダーにテンプレートを作成する必要もあります。app/views/news

これはあなたのタイプミスですか? <%= link_to 'All News', all_news_path =>

あるべきだ<%= link_to 'All News', all_news_path %>

于 2012-11-21T14:43:11.967 に答える