gpt4 book ai didi

ruby-on-rails - 我的复杂路线的 Controller 规范中没有路线匹配

转载 作者:行者123 更新时间:2023-12-04 21:20:50 25 4
gpt4 key购买 nike

我有这条路线:

resources :items, path: 'feed', only: [:index], defaults: { variant: :feed }

它嵌套在 api 和 v1 命名空间中。 ( request_source 参数来自 Api 命名空间)。

我想在我的 Controller 规范中测试索引操作。我试过:
get :feed, community_id: community.id, :request_source=>"api"

不起作用,因此:
get :index, community_id: community.id, :request_source=>"api", variant: 'feed'

说:
ActionController::RoutingError:
No route matches {:community_id=>"14", :request_source=>"api", :variant=>"feed", :controller=>"api/v1/items"}

- - - -编辑 - - - - -

我想使用变体将参数发送到 Controller 的原因是因为我有所有这些路由:
    resources :items, path: 'feed',    only: [:index], defaults: { variant: 'feed' }
resources :items, path: 'popular', only: [:index], defaults: { variant: 'popular' }

然后,在 ItemsController 中,我有一个用于索引操作的前置过滤器“get_items”:
def get_items
if params[:variant] == 'feed'
....
elsif params[:variant] == 'popular'
....
end

最佳答案

看起来问题来自定义 defaults: { variant: :feed } .你能否详细说明你试图用它来完成什么。

我创建了一个应用程序来测试您拥有的内容,并在 config/routes.rb 中使用以下内容

namespace :api do
namespace :v1 do
resources :items, path: 'feed', only: :index
end
end

我在运行时得到了这个 rake routes .
$ rake routes
api_v1_items GET /api/v1/feed(.:format) api/v1/items#index

更新:params 设置默认值您可以在操作中使用的路由中 undefined variable 。
params[:variant] ||= 'feed'

更新 2:您可以有条件地分配 params[:variant]在像这样的前置过滤器中。
class ItemsController < ApplicationController
before_filter :get_variant

# or more simply
# before_filter lambda { params[:variant] ||= 'feed' }

def index
render text: params[:variant]
end

private

def get_variant
# make sure we have a default variant set
params[:variant] ||= 'feed'
end
end

关于ruby-on-rails - 我的复杂路线的 Controller 规范中没有路线匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12081261/

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