Ruby on rails 3 需要做一个链接,显示所有的新闻后,限制在索引中显示的数量
在我的索引视图中,我将显示的新闻数量限制为2条最新的新闻 但我还想在db中包含所有新闻的链接 在我的新闻控制器中,我有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 我是否应该限制视图中的帖子数量 这是我用来显
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