Rails路由到。代替 /

时间:2013-05-05 18:46:15

标签: ruby-on-rails routes

我正在写这个问题,因为我在StackOverflow和/或任何相关论坛中找不到任何解决方案。我的问题基本上就是这个。

我添加了一个名为" news"到我的Rails项目。该表格完全以名称" news"在我的Mysql中。

按照这些步骤,我遇到了链接到" news"将我重定向到" news.1"不是"新闻/ 1"。

我的routes.rb

match "news" => 'homepage#news'
match "news/:id" => 'homepage#news_details'

我的控制器

def news
@news = News.all

respond_to do |format|
  format.html { render layout: "news" } # index.html.erb
  format.json { render json: @news }
end
end

def news_details
@news = News.find(params[:id])

respond_to do |format|
  format.html { render layout: "news" } # index.html.erb
  format.json { render json: @users }
end
end

in news.html.erb

<div class="postDetails">
<a href="trainers-single.html" class="postTitle"><%= news.title %></a>
<p><%= truncate news.details, :length => 90 %></p>
<%= link_to 'MORE INFO', news, :class => "button-small-theme rounded3" %>
</div> 

在news.html.erb中link_to MORE INFO,新闻将我重定向到&#34; news.1&#34;而不是&#34; news / 1&#34;

感谢您的阅读。

1 个答案:

答案 0 :(得分:1)

尝试将路由作为命名路由进行访问。 如果在控制台中运行rake routes,请查看它为路由指定的名称。如果没有,则将您的routes.rb更改为

match "news/:id", to: "homepage#news_details", as: "show_news"

然后在您看来,使用

<%= link_to "MORE INFO", show_news_path(news), class: "button-small-theme rounded3" %>

看看是否有帮助。 如果没有,可能值得尝试以更多的方式设置您的应用程序。您正在通过HomepageController访问您的新闻资源,但是如果您定义了两个自动为您提供的路线,那么它将更适合使用专用的NewsController。我更倾向于:

  • 创建一个新控制器 - NewsController
  • resources :news添加到routes.rb

在你的新闻控制器中,你应该有类似的东西:

class NewsController < ApplicationController

    def index
        @news = News.all
        respond_to do |format|
          format.html { render layout: "news" }
          format.json { render json: @news }
        end
    end      

    def show
        @news = News.find(params[:id])
        respond_to do |format|
          format.html { render layout: "news" }
          format.json { render json: @news }
        end
    end

end

然后,您只需将视图文件移动到news文件夹而不是dashboard文件夹,它应该开始工作。然后在您看来,您的链接将与您现在的链接相同,但实际上应该可以正常工作:)

相关问题