0

皆さん、こんにちは私は自分のアプリで作業していて、このエラーに遭遇しました

NoMethodError in GasStationsController#new

undefined method `gas_stations' for #<Class:0x12cf77510>
Rails.root: /Users/Users/Documents/myapps/app1

Application Trace | Framework Trace | Full Trace
app/controllers/gas_stations_controller.rb:4:in `new' 

私のルートが大丈夫かどうかわかりません。routes.rb と GasStationsController を配置しました

Estaciones::Application.routes.draw do
    root :to => "static_pages#home"
    match '/contact', :to=>'static_pages#contact'
    match '/about', :to=>'static_pages#about'
    devise_for :users
    resources :users do
        resources :gas_stations
    end
    ....

user_gas_stations GET    /users/:user_id/gas_stations(.:format)                       gas_stations#index
                      POST   /users/:user_id/gas_stations(.:format)                       gas_stations#create
 new_user_gas_station GET    /users/:user_id/gas_stations/new(.:format)                   gas_stations#new
edit_user_gas_station GET    /users/:user_id/gas_stations/:id/edit(.:format)              gas_stations#edit
     user_gas_station GET    /users/:user_id/gas_stations/:id(.:format)                   gas_stations#show
                      PUT    /users/:user_id/gas_stations/:id(.:format)                   gas_stations#update
                      DELETE /users/:user_id/gas_stations/:id(.:format)                   gas_stations#destroy

ご覧のとおり、メソッドは「gas_stations」にあります

コントローラーにこれしかない

class GasStationsController < ApplicationController
     def new
      @user = User.find(params[:user_id])
      @gas_station = @user.gas_stations.build
     end
end

ユーザーモデル

class User < ActiveRecord::Base
 # Include default devise modules. Others available are:
 # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
 devise :database_authenticatable, :registerable,:recoverable, :rememberable, :trackable, :validatable

 # Setup accessible (or protected) attributes for your model
 attr_accessible :name, :email, :password, :password_confirmation, :remember_me
 # attr_accessible :title, :body
 has_many :cars
 validates_presence_of  :email
end
4

1 に答える 1

0

エラーが示すように、Rails はユーザーに関連する Gas_stations が何であるかを認識していません。その関連付けを設定する必要があります。

class User ...
  ...   
  has_many :gas_stations
  ...
于 2012-07-27T23:37:21.657 に答える