我是新手上的ruby on rails并且我遇到了一个大问题。我创建了一个User表和一个Course表。如果用户是学生,则可以注册课程。所以我的连接表是courses_users,其中包含我的用户ID和我课程的ID。
在视图中,我显示了我的所有课程,并且每个课程都有一个“注册”按钮:
<%= button_to 'register', modules_path, method: :post, params: {course_id: course.id, user_id: current_user.id} %>
这将调用我的方法Create:
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)
但我不知道如何在我看来制造一个条件。
我不知道我是否确切想要,但如果有人知道如何解决它,那将是非常好的!
答案 0 :(得分:0)
您必须在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 %>
答案 1 :(得分:0)
如果您的@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 %>
祝你好运。