向视图添加按钮以更新rails中的模型

时间:2012-10-22 14:20:55

标签: ruby-on-rails resources rails-activerecord relationship

我有两个资源,A和B,它们之间有多对多的关系。当按下A的节目视图上的按钮时,我希望建立A对象和B对象之间的关系,我也可以从视图中访问它。

你怎么能在rails3中做到这一点?

编辑:关系的相关片段。其他所有内容都是使用rails generate scaffold

生成的标准内容
class Course < ActiveRecord::Base
  ...
  has_many :course_auth_users
  has_many :students, :through => :course_auth_users, :source => :user
  ...
end


class User < ActiveRecord::Base
  ...
  has_many :course_auth_users
  has_many :enrolled_on_courses, :through => :course_auth_users, :source => :course
  ...
end

1 个答案:

答案 0 :(得分:2)

我假设你有一个这样的模型

class CourseAuthUser < ActiveRecord::Base
  belongs_to :user
  belongs_to :course
end

我还假设您的意思是已经创建了对象A和B.您的用户控制器应该有一个操作,将一个课程添加到其列表中,如下所示:

class UsersController < ApplicationController
  def enroll_course
    @student = User.find(params[:id])
    @course = Course.find(params[:course])  

    @student.enrolled_on_courses << @course

    @student.save!
  end
end

请注意,控制器部分假定您在请求参数中传递了user_id和课程。

如果这有帮助,请告诉我。我不太确定你的要求是什么。