我是ruby的新手并开始创建我的*玩具应用程序。 I:
我使用form_for
helper和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
答案 0 :(得分:8)
在config/routes.rb
中,您需要添加:
map.resources :questions
修复未定义的方法questions_path问题。
获取/questions/ask
的一种方法是像这样修改routes.rb
:
map.ask_question '/questions/ask', :controller => 'questions', :action => 'create'
将为您提供ask_question_path
,您可以在代码中引用它。
答案 1 :(得分:0)
看起来你单独完成了所有这些步骤。您应该尝试一下脚手架生成器,它将为您构建所有这些。
示例:
>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
您可以看到,使用脚手架,我们可以获得模型,控制器,视图,路径,数据库迁移,它将构建一个包含两个字段的Questions表,以及RESTful控制器操作以立即添加/更新/查看/删除任何问题数据。哦,最重要的是,一组空的测试文件准备好了你的测试:)。