我无法理解我在做一些命名空间后从视图中获得的错误:
请求:http:// dev /data/state_categories.json [GET]
错误:
NoMethodError in Data::StateCategories#index
Showing (dev_root)/app/views/data/state_categories/index.json.jbuilder where line #3 raised:
undefined method `state_category_url'
有问题的文件: app / views / data / state_categories / show.json.jbuilder
json.array!(@state_categories) do |state_category|
json.extract! state_category, :name, :id
json.url state_category_url(state_category, format: :json) #<-- this is the line that is erroring
end
我为资源设置了一些脚手架,然后决定在“api”下命名空间。我在控制器和视图中创建了一个新的“data /”目录,并将资源的控制器和视图移动到这些dirs中,这似乎是必要的。现在我的一个视图中有一个方法没有找到,不知道我需要修复它。在我移动所有内容之前,我从未需要定义此方法,它只是起作用。我在哪里打破了魔法?
配置/ app.routes.rb
namespace :data, defaults: {format: :json} do
resources :state_categories
end
应用/控制器/数据/ state_categories_controller.rb
class Data::StateCategoriesController < ApplicationController
before_action :set_state_category, only: [:show, :edit, :update, :destroy]
# GET /state_categories
# GET /state_categories.json
def index
@state_categories = StateCategory.all
debugger
end
private
# Use callbacks to share common setup or constraints between actions.
def set_state_category
@state_category = StateCategory.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def state_category_params
params.require(:state_category).permit(:name, :description)
end
end
佣金路线的输出
data_state_category GET /data/state_categories/:id(.:format) data/state_categories#show {:format=>:json}
PATCH /data/state_categories/:id(.:format) data/state_categories#update {:format=>:json}
PUT /data/state_categories/:id(.:format) data/state_categories#update {:format=>:json}
DELETE /data/state_categories/:id(.:format) data/state_categories#destroy {:format=>:json}
答案 0 :(得分:1)
检查您的路线。我想你想在你的jbuilder模板中使用data_state_category_url