Controller#new中的NoMethodError

时间:2012-07-27 20:19:19

标签: ruby-on-rails controller nomethoderror

大家好我在我的应用程序中工作,我遇到了这个错误

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

1 个答案:

答案 0 :(得分:0)

正如错误所说,Rails不知道与用户有关的gas_stations是什么。您需要设置该关联:

class User ...
  ...   
  has_many :gas_stations
  ...