我是轨道上的Ruby新手,我被一个大问题阻止了。我创建了一个用户表和一个课程表。如果用户是学生,则可以注册课程。所以我有我的连接表,它与我的用户的 id 和我的课程的 id courses_users。
在一个视图中,我显示了我的所有课程,并且每个不同的课程都有一个"注册"按钮:
<%= button_to 'register', modules_path, method: :post, params: {course_id: course.id, user_id: current_user.id} %>
这将调用我的方法创建:
def create
@course_user = CoursesUser.new(course_params)
@course_user.save
redirect_to modules_path
end
因此,这将在当前用户和我选择course_id之间建立关系。
我的问题是我应该怎么做才能捕捉我的关系,如果这个关系已经存在,它将显示另一个按钮来取消从本课程中注销(类似于关注/取消关注(
我试过这个:
@course_user = CoursesUser.where(user_id: current_user.id)
但我不知道如何提出在我看来的条件。
我不知道我是否足够精确,但如果有人知道如何解决它,那就太好了!
您必须在 user.rb 中具有关联
User has_many :courses
现在您可以获取用户课程列表
<% if current_user.course_ids.include?(course.id) %>
<%= button_to 'unregister', .... %>
<% else %>
<%= button_to 'register', modules_path, method: :post, params: {course_id: course.id, user_id: current_user.id} %>
<% end %>
@course_user
实例返回您期望的值那么你的视图应该看起来像
<% if @course_user.blank? %>
<%= button_to 'register', modules_path, method: :post, params: course_id: course.id, user_id: current_user.id} %>
<% else %>
#your unregister/unfollow link
<% end %>
祝你好运。