неопределенный метод в рельсах - PullRequest
4 голосов
/ 01 декабря 2008

Я новичок в ruby ​​и начал создавать свое * игрушечное приложение. Я:

  1. Создан контроллер 'Вопросы'
  2. Создана модель 'вопрос'
  3. Создано действие контроллера 'new'
  4. Добавлен файл 'New.html.erb'

в файле erb я использую form_for помощник и new действие контроллера, где я создаю экземпляр @question переменная экземпляра. Когда я пытаюсь запустить это, я получаю 'undefined method: questions_path for #<ActionView::Base:0x5be5e24>' ошибку. Ниже мой new.html.erb:

<%form_for @question do |f| %>
   <%=f.text_field :title %>
<%end%>    

Пожалуйста, посоветуйте, как это исправить, а также помогите мне с псевдонимами этого действия контроллера. Я имею в виду, что я хотел бы набрать http://mysite/questions/ask, вместо / questions / create

Ответы [ 2 ]

8 голосов
/ 01 декабря 2008

В config/routes.rb вам нужно будет добавить:

map.resources :questions

чтобы исправить проблему с неопределенным методом questions_path.

Один из способов получить /questions/ask - изменить routes.rb следующим образом:

map.ask_question '/questions/ask', :controller => 'questions', :action => 'create'

, который даст вам ask_question_path, на который вы можете ссылаться в своем коде.

0 голосов
/ 01 декабря 2008

Похоже, вы проделали все эти шаги по отдельности. Вы должны попробовать генератор строительных лесов, который построит все это для вас.

Пример:

>ruby script/generate scaffold question question:string answer:string votes:integer
  exists  app/models/
  exists  app/controllers/
  exists  app/helpers/
  create  app/views/questions
  exists  app/views/layouts/
  exists  test/functional/
  exists  test/unit/
  exists  public/stylesheets/
  create  app/views/questions/index.html.erb
  create  app/views/questions/show.html.erb
  create  app/views/questions/new.html.erb
  create  app/views/questions/edit.html.erb
  create  app/views/layouts/questions.html.erb
  create  public/stylesheets/scaffold.css
  create  app/controllers/questions_controller.rb
  create  test/functional/questions_controller_test.rb
  create  app/helpers/questions_helper.rb
  route  map.resources :questions
  dependency  model
  exists    app/models/
  exists    test/unit/
  exists    test/fixtures/
  create    app/models/question.rb
  create    test/unit/question_test.rb
  create    test/fixtures/questions.yml
  create    db/migrate
  create    db/migrate/20081201150131_create_questions.rb

Итак, как вы можете видеть, с помощью скаффолда мы получаем нашу модель, наш контроллер, наши представления, наш маршрут, миграцию базы данных, которая создаст таблицу вопросов с двумя полями, и действия контроллера RESTful для немедленного добавления / обновления / просмотра / удалить любые данные вопроса. О, и самое главное, пустой набор тестовых файлов, готовых к написанию ваших тестов:).

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