我正在写这个问题,因为我在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;
感谢您的阅读。
答案 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
文件夹,它应该开始工作。然后在您看来,您的链接将与您现在的链接相同,但实际上应该可以正常工作:)