我试图获取10篇最新文章的标题,这是使用ruby on rails的博客应用程序的一部分。 我这样做了 但是在路由方面我遇到了困难。

当我喜欢的时候

(此代码是文章/索引的一部分)

<% @article_titles.each do |article_title|%>
              <% if !article_title.nil? %>
               <div style="margin-top:15px; margin-left:8px"> <%= link_to article_title.title,
               article_path(article_title) %></div> 
            <% end %>    
            <% end %>

它给了我路由错误

没有路由匹配{:action =>“show”,:controller =>“articles”,:id =>#}错误。

我尝试了另一种方式,如下所示: -

 <% @article_titles.each do |article_title|%>
              <% if !article_title.nil? %>
               <div style="margin-top:15px; margin-left:8px"> <%= link_to article_title.title,
               "/articles?id=#{article_title.id}"   %></div> 
            <% end %>    
            <% end %>

的routes.rb

match "articles/:id" => "articles#show"

我没有给出错误,只在我的浏览器的地址栏中显示("http://localhost:3000/articles?id=")而没有采取任何措施。

耙路线:

        new_user_session GET    /users/sign_in(.:format)                          devise/sessions#new
            user_session POST   /users/sign_in(.:format)                          devise/sessions#create
    destroy_user_session DELETE /users/sign_out(.:format)                         devise/sessions#destroy
           user_password POST   /users/password(.:format)                         devise/passwords#create
       new_user_password GET    /users/password/new(.:format)                     devise/passwords#new
      edit_user_password GET    /users/password/edit(.:format)                    devise/passwords#edit
                         PUT    /users/password(.:format)                         devise/passwords#update
cancel_user_registration GET    /users/cancel(.:format)                           devise/registrations#cancel
       user_registration POST   /users(.:format)                                  devise/registrations#create
   new_user_registration GET    /users/sign_up(.:format)                          devise/registrations#new
  edit_user_registration GET    /users/edit(.:format)                             devise/registrations#edit
                         PUT    /users(.:format)                                  devise/registrations#update
                         DELETE /users(.:format)                                  devise/registrations#destroy
                    root        /                                                 articles#index
         dashboard_index GET    /dashboard(.:format)                              dashboard#index
                         POST   /dashboard(.:format)                              dashboard#create
           new_dashboard GET    /dashboard/new(.:format)                          dashboard#new
          edit_dashboard GET    /dashboard/:id/edit(.:format)                     dashboard#edit
               dashboard GET    /dashboard/:id(.:format)                          dashboard#show
                         PUT    /dashboard/:id(.:format)                          dashboard#update
                         DELETE /dashboard/:id(.:format)                          dashboard#destroy
                    tags GET    /tags(.:format)                                   tags#index
                         POST   /tags(.:format)                                   tags#create
                 new_tag GET    /tags/new(.:format)                               tags#new
                edit_tag GET    /tags/:id/edit(.:format)                          tags#edit
                     tag GET    /tags/:id(.:format)                               tags#show
                         PUT    /tags/:id(.:format)                               tags#update
                         DELETE /tags/:id(.:format)                               tags#destroy
        article_comments GET    /articles/:article_id/comments(.:format)          comments#index
                         POST   /articles/:article_id/comments(.:format)          comments#create
     new_article_comment GET    /articles/:article_id/comments/new(.:format)      comments#new
    edit_article_comment GET    /articles/:article_id/comments/:id/edit(.:format) comments#edit
         article_comment GET    /articles/:article_id/comments/:id(.:format)      comments#show
                         PUT    /articles/:article_id/comments/:id(.:format)      comments#update
                         DELETE /articles/:article_id/comments/:id(.:format)      comments#destroy
                                /articles/:article_id/articles/:id(.:format)      articles#show
                articles GET    /articles(.:format)                               articles#index
                         POST   /articles(.:format)                               articles#create
             new_article GET    /articles/new(.:format)                           articles#new
            edit_article GET    /articles/:id/edit(.:format)                      articles#edit
                 article GET    /articles/:id(.:format)                           articles#show
                         PUT    /articles/:id(.:format)                           articles#update
                         DELETE /articles/:id(.:format)                           articles#destroy

articles_controller.rb

 def index
          @articles = Article.all(:order => "created_at DESC")
      @article_titles = Article.select(:title).first(10)
      end
    def show
      @article = Article.find(params[:id])

    end

的routes.rb

Mau::Application.routes.draw do
  devise_for :users
  root :to => 'articles#index'
  resources :dashboard
  resources :tags
  resources :articles do
  resources :comments
  match "articles/:id" => "articles#show"
end

调试器日志。

ActionController::RoutingError (No route matches [GET] "/assets/defaults.js"):
  actionpack (3.2.11) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
  actionpack (3.2.11) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
  railties (3.2.11) lib/rails/rack/logger.rb:32:in `call_app'
  railties (3.2.11) lib/rails/rack/logger.rb:16:in `block in call'
  activesupport (3.2.11) lib/active_support/tagged_logging.rb:22:in `tagged'
  railties (3.2.11) lib/rails/rack/logger.rb:16:in `call'
  actionpack (3.2.11) lib/action_dispatch/middleware/request_id.rb:22:in `call'
  rack (1.4.5) lib/rack/methodoverride.rb:21:in `call'
  rack (1.4.5) lib/rack/runtime.rb:17:in `call'
  activesupport (3.2.11) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
  rack (1.4.5) lib/rack/lock.rb:15:in `call'
  actionpack (3.2.11) lib/action_dispatch/middleware/static.rb:62:in `call'
  railties (3.2.11) lib/rails/engine.rb:479:in `call'
  railties (3.2.11) lib/rails/application.rb:223:in `call'
  rack (1.4.5) lib/rack/content_length.rb:14:in `call'
  railties (3.2.11) lib/rails/rack/log_tailer.rb:17:in `call'
  rack (1.4.5) lib/rack/handler/webrick.rb:59:in `service'
  c:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
  c:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
  c:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'

我是否需要在文章的show动作中添加一些内容? 请建议我。

===============>>#1 票数:1

这可能或不能解决您的问题,但您在路线块中缺少最终end

Mau::Application.routes.draw do
  devise_for :users
  root :to => 'articles#index'
  resources :dashboard
  resources :tags
  resources :articles do
  resources :comments
  match "articles/:id" => "articles#show"
end

应该

Mau::Application.routes.draw do
  devise_for :users
  root :to => 'articles#index'
  resources :dashboard
  resources :tags
  resources :articles do
    resources :comments
  end
end

请注意,您不需要您拥有的match路由,因为它是resources :articles的一部分resources :articles

编辑

你也应该尝试只传入这样的id:

<% @article_titles.each do |article_title|%>
    <% if !article_title.nil? %>
         <div style="margin-top:15px; margin-left:8px"> 
             <%= link_to article_title.title, article_path(article_title.id) %>
         </div> 
    <% end %>    
<% end %>

===============>>#2 票数:1 已采纳

您的问题是@article_titles记录不包含id属性,因为您只选择标题Article.select(:title) 完成你正在尝试的更好的方法是在你的控制器中:

@articles = Article.order("created_at DESC")
@first_articles = @articles.limit(10)

在@article_titles使用@first_articles。

我还质疑你是否需要@articles(你只显示前10条记录吗?)使用代码我建议它是一个ActiveRecord :: Relation并且它不会被加载(命中数据库),除非你实际上在视图中使用变量,但这是一个不同的SO问题的主题

===============>>#3 票数:0

删除match "articles/:id" => "articles#show" ,确保resources :articles存在, article_path(@article)应该有效。

更改

Article.select(:title).first(10)

通过

Article.select([:id, :title]).first(10)

您始终需要选择:用于路径的ID。

  ask by Vieenay Siingh translate from so

未解决问题?本站智能推荐:

2回复

Rails中没有路由匹配,重复错误。 如何调试?

所以我有这个错误: 注意:list_id =>#...看起来有点糟。 Product以某种方式进入那里。 这是product.rb 这是list.rb 这是list_product_interactions.rb 当我创建产品(具有已经采用的名称的产
2回复

Rails 3路由错误-“没有路由匹配”

我跟随O'Reilly Rails的书,但它是为Rails 2创建的,所以我认为这就是错误所在。 在app / views / entries / sign_in.html.erb中: 并在app / controllers / entries_controller.rb中:
2回复

Rails 4路由错误 - 没有路由匹配[POST]“/ categories / new”

在学习Rails 4时,我试图在我的简单博客的帖子中添加类别时遇到困难。 我已经生成了模型,运行了迁移并添加了一个控制器。 无论我现在在尝试创建一个类别时做了什么,我都会遇到同样的错误:没有路由匹配[POST],这很奇怪,因为我似乎已经准备好了所有代码。 请帮忙! 类别控制器
2回复

我正在构建的Ruby应用中没有路由与[POST]匹配

我正在尝试构建一个应用程序,该应用程序允许用户使用平稳的路由创建行程,但是,当用户登录并尝试创建行程时,我遇到了一个问题。 我收到“没有路线匹配[POST]“ / users / 8 / trips / new”” 这些是路线: 这是行程控制器: 这是创建新行程的表格。
1回复

Ruby on Rails:存在路线时,没有路线匹配错误

我正在尝试链接到一系列非常简单的welcome#___类型的页面,并不断出现No route matches [GET] ...错误。 我正在尝试的三个链接是: 和 和 即使我的耙路显示这些路由存在,我仍会遇到no route matches错误的情况: 收
3回复

Ruby on Rails:路由错误

我在删除和显示用户记录时遇到问题。 这是我的routes.rb 这是我的管理员: 这是我的看法: 我可以显示用户数据库,但是当我删除记录时。 我收到此错误No route matches [DELETE] "/users/11" 。 我是Rails的新手,所以在
2回复

路由错误没有路由匹配[POST]“ / sessions / new”

我遇到了错误,希望有人可以提供帮助并给我一些线索,以解决该问题。 我选择性地关注敏捷开发书,并且在复制他们的代码时,结果如下: 这是我的routes.rb文件中的内容: 在我的session_controller中:skip_before_filter:authorize de
1回复

Ruby on Rails路由错误

我对铁轨上的红宝石很新! 我基本上是在尝试创建一个允许组织创建事件的应用程序! 到目前为止,用户可以创建一个组织但是当他们尝试创建一个事件时,我得到了这个错误:路由错误未定义的局部变量或方法`params'用于EventsController:Class 我已经查看了所有内容并试图找到
9回复

“Ruby on Rails-Tutorial”中的路由错误

看起来这里的一些人有这个问题,但我找不到另一个主题的任何解决方案。 我正在做Ruby on Rails-Tutorial的第3章,处理静态页面。 当我想在localhost上打开它时,它在浏览器中给出了“路由错误”。 我的Ruby目前的版本是1.9.3。 我的Rails目前是3.
3回复

没有路由匹配错误-带有嵌套资源

我的routes.rb文件中有以下嵌套资源 我的模特: 我访问时收到以下错误: /issuer/2/certificates No route matches {:action=>"edit", :controller=>"certificates"} 任