그래서 난 두 가지 모델이 있습니다 User.rb에서레일 has_and_belongs_to_many 협회
class User < ActiveRecord::Base
has_and_belongs_to_many :followed_courses, :class_name => "Course"
end
class Course < ActiveRecord::Base
has_and_belongs_to_many :followers, :class_name => "User"
end
을, 나 또한이 :
def following_course?(course)
followed_courses.include?(course)
end
def follow_course!(course)
followed_courses<<course
end
def unfollow_course!(course)
followed_courses.delete(course)
end
가 나는 courses_users 모델이없는, 단지 (courses_users를 테이블에 가입). 나는 CoursesController에서 코스를 따르거나 풀지 말아야 할 것 같습니다. 컨트롤러에서 새로운 액션을 생성합니까? 지금
과정이
= form_for @course, :url => { :action => "follow" }, :remote => true do |f|
%div= f.hidden_field :id
.actions= f.submit "Follow"
을 따르지 않을 때, 나는 과정/쇼 페이지에서 다음과 양식을 가지고 그리고 난 CoursesController에 있습니다
def follow
@course = Course.find(params[:id])
current_user.follow_course!(@course)
respond_to do |format|
format.html { redirect_to @course }
format.js
end
end
을하지만 결코처럼 보인다 활성화되었습니다. 작업을 활성화 할 수 있도록 경로를 수정해야합니까? 어떻게 수정합니까? 아니면 이것을 할 수있는 더 좋은 방법이 있습니까? 양식을 링크로 바꿀 수 있습니까? 미리 감사드립니다! 이것은 관련된 질문의 후속 조치입니다. rails polymorphic model implementation
사용한다 줄 것이다 'PUT '요청하면 새 레코드를 만들 것입니다. 개인적으로 조인 모델을 만들고': has_many : through =>'를 사용합니다. 이것은 더 많은 작업처럼 보일지 모르지만 Rails REST 규칙에 더 편하게 앉아있을 것입니다. –
감사합니다. rails3을 사용하고 있으므로'resources : courses do ','on => : member end'라는 메시지를 사용합니다. 그러나 여전히 작동하지 않습니다. Console에 'ActionController :: RoutingError "/ courses/3/toggle") : ' – randomor
는 현재 작동 중입니다. 작업이 컨트롤러에서 필터링되었습니다. :) 감사. – randomor