gpt4 book ai didi

ruby-on-rails - Ruby on rails 从 View 路由到 Controller 中的自定义方法

转载 作者:行者123 更新时间:2023-12-03 23:42:00 25 4
gpt4 key购买 nike

我有一个 Controller 名称职位。在我的 /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

我是 Rails 新手,经常对路线感到困惑。我有另一个 static_pages Controller 。里面有一个 home.html.erb文件。

我想做的是打电话 -
def categoryshow
@post = Post.find(params[:category])
end

来自 /app/views/static_pages/home.html.erb 的帖子 Controller 的 'categoryshow' 方法

我该如何管理?如果我使用“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>

我的帖子 Controller 有以下方法:

def 类别显示
        @post = Post.find(params[:category])

结尾

在这种情况下,我收到以下错误:

ActiveRecord::RecordNotFound in PostsController#categoryshow

找不到没有 ID 的帖子

其次,我尝试使用您提供的链接中提到的非资源路由:
 match ':posts(/:categoryshow(/:category))'

在 View 中,我正在使用这个:

类别
 <ul class="users">

<%= Post::CATEGORIES.each do |category| %>

<li>

<%= link_to category,"posts/#{category}" %>

</li>

<% end %>

</ul>

在这种情况下,我们的非资源路由只有在没有其他现有资源路由匹配时才会匹配。但是,我看到显示操作是匹配的,并且我收到以下错误消息:

这是表演 Action :

定义显示
        @post = Post.find(params[:id])

结尾


ActiveRecord::RecordNotFound in PostsController#show


找不到 ID=政治 的帖子
  • 我真的很感谢这里的任何帮助!
  • 谢谢 (Sidharth)
  • 最佳答案

    查看 "Adding More RESTful Actions" sections of the routing docs .

    resources :posts do
      collection do
        get 'categoryshow'
      end
    end
    或者:
    resources :posts do
    get 'categoryshow', :on => :collection
    end
    如果这不能满足您的确切需求,那么之后的部分将讨论添加任意路由。
    请注意,路由文件是明确排序的:如果您在其他东西捕获它之后尝试匹配路由,则第一个路由获胜。

    关于ruby-on-rails - Ruby on rails 从 View 路由到 Controller 中的自定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11178267/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com