0

StackOverflow や関連するフォーラムで解決策が見つからなかったため、この質問を書いています。私の問題は基本的にこれです。

Rails プロジェクトに "news" というテーブルを追加しました。テーブルは、私のMysqlで「ニュース」という名前で正確に作成されます。

これらの手順に従って、「news」にリンクすると、「news/1」ではなく「news.1」にリダイレクトされる状況に遭遇しました。

私のルート.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

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 で、news が「news/1」ではなく「news.1」にリダイレクトされます。

読んでくれてありがとう。

4

1 に答える 1

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" %>

それが役立つかどうかを確認してください。そうでない場合は、よりレールに近い方法でアプリをセットアップしてみる価値があるかもしれません。を介してニュース リソースにアクセスしていますが、それは問題ありませんが、レールが自動的に提供する 2 つのルートを定義していることを考えるとHomepageController、専用を使用する方が適しています。NewsController私はより傾向があります:

  • 新しいコントローラーを作成します -NewsController
  • resources :newsroutes.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始めます。次に、あなたのビューでは、リンクは現在のものと同じになりますが、実際には機能するはずです:)

于 2013-05-05T19:00:24.993 に答える