我必须将url包含为我的simple_form参数是什么原因?

时间:2017-09-17 12:32:48

标签: ruby-on-rails ruby rubygems

我的代码无法正常工作

<%= simple_form_for @lesson do |f| %>

但是在我做的时候工作了

<%= simple_form_for @lesson, url: course_lessons_path do |f| %>

我的路线是

Prefix Verb   URI Pattern                                    Controller#Action
    course_lessons GET    /courses/:course_id/lessons(.:format)          lessons#index
                   POST   /courses/:course_id/lessons(.:format)          lessons#create
 new_course_lesson GET    /courses/:course_id/lessons/new(.:format)      lessons#new
edit_course_lesson GET    /courses/:course_id/lessons/:id/edit(.:format) lessons#edit
     course_lesson GET    /courses/:course_id/lessons/:id(.:format)      lessons#show
                   PATCH  /courses/:course_id/lessons/:id(.:format)      lessons#update
                   PUT    /courses/:course_id/lessons/:id(.:format)      lessons#update
                   DELETE /courses/:course_id/lessons/:id(.:format)      lessons#destroy
           courses GET    /courses(.:format)                             courses#index
                   POST   /courses(.:format)                             courses#create
        new_course GET    /courses/new(.:format)                         courses#new
       edit_course GET    /courses/:id/edit(.:format)                    courses#edit
            course GET    /courses/:id(.:format)                         courses#show
                   PATCH  /courses/:id(.:format)                         courses#update
                   PUT    /courses/:id(.:format)                         courses#update
                   DELETE /courses/:id(.:format)                         courses#destroy

我认为这与我能够做的关联有关

<%= simple_form_for @course do |f| %>

我的课程视图。但我不完全确定为什么我需要一个网址以及是否有更好的网址。更简洁的方法来编辑我的simple_form。

1 个答案:

答案 0 :(得分:0)

rails具有约定,因为您使用的是型号名称课程,但处理课程的控制器是 course_lesson ,如果您使用

<%= simple_form_for @lesson do |f| %>

这将尝试查找lesson_controller,这就是你必须使用url选项提供rails更多信息的原因

这也回答了你的问题

<%= simple_form_for @course do |f| %>

没有网址,因为你的模型是课程,你的控制器也是course_controller