Ruby on rails 3 需要做一个链接,显示所有的新闻后,限制在索引中显示的数量

Ruby on rails 3 需要做一个链接,显示所有的新闻后,限制在索引中显示的数量,ruby-on-rails-3,view,controller,Ruby On Rails 3,View,Controller,在我的索引视图中,我将显示的新闻数量限制为2条最新的新闻 但我还想在db中包含所有新闻的链接 在我的新闻控制器中,我有 def index @news = News.all(:order => "created_at DESC", :limit => 2) end 我用另一种方法告诉我所有的消息 def all @news_all = News.all(:order => "created_at DESC") end 我是否应该限制视图中的帖子数量 这是我用来显

在我的索引视图中,我将显示的新闻数量限制为2条最新的新闻

但我还想在db中包含所有新闻的链接

在我的新闻控制器中,我有

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 =>
我遇到一个错误,
NewsController\show
无法使用
id=“all”

我对ruby很陌生,不知道如何做到这一点:)

更新

我按照Kien的建议更新了代码

在我的路线中使用了收集

resources :news do
  collection do
    get 'all'
  end
end
我所有新闻的索引链接

<%= link_to 'All news', all_news_path, :class => 'btn btn-mini btn-success' %>
昨天这很有效,但今天我从git中提取,现在我在索引文件中的链接上得到了
未定义的局部变量或方法all\u news\u 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

如果您这样制作路线,它将与
show
路线冲突:

news/:id
news/all
路由将误解
所有
都是
:id
参数

您应该使用集合:

resources news do
  collection do
    get 'all'
  end
end
您将获得路径:
所有新闻路径
。您还需要在
app/views/news
文件夹中创建一个模板
all.html.erb
,以显示所有新闻

这是你的打字错误吗<代码>


应该是

谢谢,伙计!是的,那是个打字错误,我也有一个推特引导程序“:class=>'btn btn mini btn success'`在它后面,但我忽略了它以简化代码猜测这就是
=>
的原因:p昨天这很好,但今天我得到了一个
未定义的局部变量或方法all\u news\u path
错误我的链接看起来和你的和我的路线一样,您知道什么会导致rails无法识别
所有新闻路径
?我会用新代码更新帖子可能在
all
操作中您没有
@news\u all
。或者再次检查您的路线,可能在合并后它会发生一些变化。我仍然在all方法中有
@news\u all=news.all(:order=>“created\u at DESC”)
,我的路线是您建议的集合(我只在新闻前面添加了:),有什么方法来强化路线吗?我现在正在运行rake路由,我不明白为什么它是
all\u news\u index
,但你有它,所以只要使用
all\u news\u index\u path
,它就会工作。
news/:id
news/all
resources news do
  collection do
    get 'all'
  end
end