Проблема Rails Scaffold # неопределенный метод `edit_pais_path ' - PullRequest
4 голосов
/ 09 апреля 2010

Я создал эшафот с именем pais (Это слово по-португальски из Бразилии, и это та же страна), я создал с помощью следующей команды:

ruby script\generate scaffold pais name:string abreviattion:string

Сначала я изменил интонации на мою локальную идиому, вот так:

inflect.plural /^([a-zA-z]*)s$/i, '\1ses'  #The plural of Pais is Paises  

И когда я попытался открыть страницу на http://localhost:3000/paises, я получаю следующую ошибку:

undefined method `edit_pais_path' for #<ActionView::Base:0x387fdf4>

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 09 апреля 2010

проблема

"pais".pluralize приводит к "pais"

Это действительно характерно для людей, которые выбирают модель News. Rails должен различать единственную и множественную версию вашей модели.

routes.rb

map.resources :pais, :singular => :pai

Теперь вы будете использовать

pai_path, edit_pai_path и new_pai_path


Альтернативно

map.resources :pais, :as => "goats"

Сгенерирует для вас следующие пути:

HTTP    URL             controller  action  
GET     /goats          Pais        index    
GET     /goats/new      Pais        new      
POST    /goats          Pais        create  
GET     /goats/1        Pais        show    
GET     /goats/1/edit   Pais        edit    
PUT     /goats/1        Pais        update  
DELETE  /goats/1        Pais        destroy  

Оформление Маршрутных маршрутов извне в Руководство по guides.rubyonrails.org для получения дополнительной информации

1 голос
/ 10 апреля 2010

Я немного повозился с этим и нашел решение, которое могло бы помочь вам немного лучше.

Шаг 1

ДО вы создаете свою эшафот, убедитесь, что в вашем файле inflections.rb есть правильное перегиб.

ActiveSupport::Inflector.inflections do |inflect|
  inflect.irregular 'pokem', 'pokemon'
end

Шаг 2

Теперь вы можете создать свой эшафот

[bruno ~/pokedex]$ script/generate scaffold pokem name:string

Шаг 3

Проверьте новые сладкие маршруты!

[bruno ~/pokedex]$ rake routes

   pokemon GET    /pokemon(.:format)                 {:controller=>"pokemon", :action=>"index"}
           POST   /pokemon(.:format)                 {:controller=>"pokemon", :action=>"create"}
 new_pokem GET    /pokemon/new(.:format)             {:controller=>"pokemon", :action=>"new"}
edit_pokem GET    /pokemon/:id/edit(.:format)        {:controller=>"pokemon", :action=>"edit"}
     pokem GET    /pokemon/:id(.:format)             {:controller=>"pokemon", :action=>"show"}
           PUT    /pokemon/:id(.:format)             {:controller=>"pokemon", :action=>"update"}
           DELETE /pokemon/:id(.:format)             {:controller=>"pokemon", :action=>"destroy"}

Примечание

Если вы сгенерируете свой эшафот за до , и вы определите свое отклонение, названные маршруты не будут обновлены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...