我是Rails新手并且在将参数传递给表单时遇到了一些麻烦。
我有一个课程模型和课程模型。课程和课程与has_many:通过关联相关联。代码如下:
class Course < ActiveRecord::Base
attr_accessible :description, :name
has_many :course_listings
has_many :lessons, through: :course_listings
end
class Lesson < ActiveRecord::Base
attr_accessible :title, :body, :category_ids
has_many :course_listings
has_many :courses, through: :course_listings
end
class CourseListing < ActiveRecord::Base
attr_accessible :course_id, :lesson_id
belongs_to :course
belongs_to :lesson
end
我想允许用户向现有课程添加课程,即创建新的课程列表。现在我在app / views / courses / show.html.erb
上有以下内容 <%= link_to 'Add New Lesson', new_course_listing_path(course_id: @course.id) %>
在CourseListingsController中,我有:
def new
@course_listing = CourseListing.new
if params[:course_id]
@course_listing.course_id = params[:course_id]
end
end
在新课程列表的表格中,我有:
<%= form_for(@course_listing) do |f| %>
<%= f.hidden_field :course_id, value: @course_id %>
<%= f.label :lesson_id, "Enter Lesson" %>
<%= f.text_field :lesson_id %>
<%= f.submit "Save" %>
<% end %>
上述代码未提交课程ID。在日志中我看到:
Parameters: {..., "course_listing"=>{"course_id"=>"", "lesson_id"=>"7"},
"commit"=>"Save Lesson"}
(0.1ms) begin transaction
(0.1ms) rollback transaction
从上面可以看出,course_id没有被传递到CourseListingsController。花了很多时间研究这个,任何指导都会非常感激。
答案 0 :(得分:0)
这里可能存在一些问题。
答案 1 :(得分:0)
您在视图中使用@course_id变量,但我看不到它的设置位置?检查页面时,那里有值吗?此外,嵌套属性提示是一个很好的。你会经常使用这种模式,使学习它现在变得有价值。 (快速错字/修复“have_many”显然是has_many。你越确定你从未正确输入它,它就越不可能潜入你的代码)。