【发布时间】:2017-04-12 12:41:15
【问题描述】:
我是 ruby on rails 的新手,但我再次遇到与上次非常相似的问题。我有一个 User 表、一个 Course 表和一个 Mark 表。 我可以使用 user_id、course_id 和成绩创建标记。
在我的模型中,我有:
/* Mark model */
class Mark < ActiveRecord::Base
belongs_to :user
belongs_to :course
end
/* Course model */
class Course < ActiveRecord::Base
has_many :marks
end
/* User model */
class User < ActiveRecord::Base
has_many :marks
end
所以我想做的是当我创建一个新标记时,我希望我的表单消失并显示一个按钮 destroy !像这样:
<% if @mark.course_ids.include?(@course.id) and @mark.user_ids.include?(user.id)
# Button destroy
<% else %>
<%= form_for Mark.new do |f| %>
<%= hidden_field_tag :course_id, @course.id %>
<%= hidden_field_tag :user_id, user.id %>
Grade: <%= number_field_tag :grade, nil, min: 0, max: 100 %>
<%= f.submit %>
<% end %>
<% end %>
目标是避免之前刚刚添加标记时的形式.. 但这里显然@mark.course_ids 和@mark.user_ids 不存在!!
感谢您的帮助!
【问题讨论】:
-
“与上次相似” – 你指的是另一个问题吗?如果有,请提供链接。
-
是的,另一个是这样的:here
-
@mark包含course_id和user_id。所以你可以写if @mark.course_id == @course.id && @mark.user_id == user.id -
@Velantin Mark 属于 user , Mark 属于 course 。这意味着 Mark 将始终只有一个课程和用户。对吗?
-
我的观点将在我的课程中展示,例如:course/1。我通过查找
course_id: params[:id]找到@mark!这是为了让我的表格中的每个@mark都链接到本课程。所以@mark是一个表,如果没有.each,就不能调用方法user_id或course_id!
标签: mysql ruby-on-rails ruby activerecord