【问题标题】:Adding a button to a view for updating a model in rails在视图中添加一个按钮以更新 Rails 中的模型
【发布时间】:2025-11-25 10:40:02
【问题描述】:

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

如何在 rails3 中做到这一点?

编辑:关系的相关sn-p。其他一切都是使用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

【问题讨论】:

  • 您能否提供视图/控制器/模型的当前代码的 sn-p?
  • @LeoCorrea 添加模型,其余为标准使用脚手架生成。

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


【解决方案1】:

我假设你有这样的模型

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 和一个课程。

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

【讨论】: