视图中的foo_url的NoMethodError

时间:2013-11-18 18:43:25

标签: ruby-on-rails ruby-on-rails-3

我无法理解我在做一些命名空间后从视图中获得的错误:

请求: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}

1 个答案:

答案 0 :(得分:1)

检查您的路线。我想你想在你的jbuilder模板中使用data_state_category_url