コントローラー名の投稿があります。私の/config/routes.rb
中で、私はこれを使用しました-
resources :posts
/app/controllers/posts_controller.rb:
class PostsController < ApplicationController
def new
@post = Post.new
end
def show
@post = Post.find(params[:id])
end
def categoryshow
@post = Post.find(params[:category])
end
def index
@posts = Post.all
end
def create
@post = Post.new(params[:post])
if @post.save
flash.now[:success] = "Your Post Successful"
redirect_to @post
else
render 'new'
end
end
end
私はレールに不慣れで、ルートと混同されることがよくあります。別のstatic_pagesコントローラーがあります。中にファイルがありhome.html.erb
ます。
私がしたいのは電話することです-
def categoryshow
@post = Post.find(params[:category])
end
からの投稿コントローラの「categoryshow」メソッド/app/views/static_pages/home.html.erb
どうすればそれを管理できますか?'posts_path'を使用すると、categoryshowアクションではなくインデックスアクションになります。
#私はリンクを読み、そこからいくつかのことを試しました。これが私が直面している問題です:
config/routes.rbでこれを試したとき
resources :posts do
collection do
get 'categoryshow'
end
end
これにより、「categoryshow_posts_path」が生成されます
私の見解では、私はこれを使用しました:
<ul class="users">
<%= Post::CATEGORIES.each do |category| %>
<li>
<%= link_to category,categoryshow_posts_path %>
</li>
<% end %>
</ul>
私の投稿コントローラーには次の方法があります。
def categoryshow
@post = Post.find(params[:category])
終わり
この場合、次のエラーが発生します。
PostsController#categoryshowのActiveRecord ::RecordNotFound
IDのない投稿が見つかりませんでした
次に、あなたが提供したリンクに記載されているように、リソースの少ないルートを使用してみました。
match ':posts(/:categoryshow(/:category))'
ビューでは、私はこれを使用しています:
カテゴリ
<ul class="users">
<%= Post::CATEGORIES.each do |category| %>
<li>
<%= link_to category,"posts/#{category}" %>
</li>
<% end %>
</ul>
この場合、他の既存のリソースフルルートが一致しない場合にのみ、非リソースフルルートが一致します。ただし、show actionが一致していることがわかり、次のエラーメッセージが表示されます。
これはショーアクションです:
デフショー
@post = Post.find(params[:id])
終わり
PostsController#showのActiveRecord ::RecordNotFound
id=Politicsの投稿が見つかりませんでした
ここで助けていただければ幸いです!!
ありがとう(シドハース)