Ruby on rails 使用Rails中显示页面上的按钮将用户添加到订阅模型

Ruby on rails 使用Rails中显示页面上的按钮将用户添加到订阅模型,ruby-on-rails,Ruby On Rails,不知道你能不能帮我。我已经在这上面呆了一段时间了。我试图在课程展示页面上有一个按钮,允许当前登录的用户显示为该特定课程的注册用户。(基本上只是将用户id和课程id添加到订阅模型中) 我可能完全走错了方向-我创建了一个订阅模型,该模型可以接收用户id和课程id。我正在尝试在课程控制器中创建一个注册类,该类将允许将上述数据输入订阅模型。我不想创建一个新的订阅控制器并从那里开始工作。是否可以在courses controller中定义一个类来获取数据并在subscriptions模型中创建它 我可以使

不知道你能不能帮我。我已经在这上面呆了一段时间了。我试图在课程展示页面上有一个按钮,允许当前登录的用户显示为该特定课程的注册用户。(基本上只是将用户id和课程id添加到订阅模型中)

我可能完全走错了方向-我创建了一个订阅模型,该模型可以接收用户id和课程id。我正在尝试在课程控制器中创建一个注册类,该类将允许将上述数据输入订阅模型。我不想创建一个新的订阅控制器并从那里开始工作。是否可以在courses controller中定义一个类来获取数据并在subscriptions模型中创建它

我可以使用DB for SQlite程序手动输入这些数据。然后我可以调用注册用户的数据,并显示在课程展示页面的底部。我这里的问题是使用enrol按钮自动添加。任何帮助都将不胜感激。代码添加

课程控制员:

  def enroll
@subscription = Subscription.new(params[:current_user.id, :id])

@subscription.save
 end
私人的

def course_params
  params.require(:course).permit(:title, :description, :price, :category_id, :course_img, :venue, :max_enrolment, :course_reference, :short_description, :duration_days, :duration_weeks, :start_date, :start_time, :end_date)
end
路线代码:

   Rails.application.routes.draw do

  get 'pages/about'

  get 'pages/contact'

  devise_for :users
  resources :courses do
    post :enroll
    collection do
      get 'search'
    end
  end
Rake routes正在展示这一点,这对我来说很好

course_enroll POST   /courses/:course_id/enroll(.:format) courses#enroll
显示页面

<%= link_to "Enroll", course_enroll_path(@course), class: "btn-enroll" %>
课程模式

 belongs_to :user
  belongs_to :category

  has_many :subscriptions
用户模型

 has_many :courses
  has_many :subscriptions
订阅模式

class Subscription < ActiveRecord::Base
  belongs_to :user
  belongs_to :course
end
类订阅

我知道这可能需要一个GET操作,但是什么是最好的方法呢?或者我只是走了一条完全错误的道路,试图不制作订阅控制器,而只是使用课程控制器。谢谢各位

您需要在指向
助手的
链接中声明该方法,因为默认方法将是
GET
,除非指定了该方法:

<%= link_to 'Enroll', course_enroll_path(@course), class: 'btn-enroll', method: :post %>
加上参数中的编辑,以创建新记录:

<%= link_to 'Enroll', course_enroll_path(course, user_id: current_user.id), method: :post %>


非常感谢塞巴斯蒂安。我从来没有停下来思考过method::post,并且意识到这些方法是按路线顺序完成的,所以我没有选择这种方法。我记得大学时的情景。非常感谢。另外一个很好的修正是,当我知道订阅已经创建,但没有sata进入时,我就开始修改它们。这对我解释了很多。再次感谢。英雄嗨,塞巴斯蒂安,试图提高投票率,但stackoverflow说,如果我的级别不够高,投票率会被记录下来,但不会公开显示。再次感谢你的回答。啊,是的,说实话,我甚至没有注意到那是被接受的按钮。不要在这么多,但迪福看到它的价值这些天。这里完全是新手。谢谢你,塞巴斯蒂安。
# app/controllers/courses_controller.rb
def enroll
  @subscription = Subscription.new(course_id: params[:course_id], user_id: params[:user_id])
  @subscription.save
end
<%= link_to 'Enroll', course_enroll_path(course, user_id: current_user.id), method: :post %>