ここで私を助けることができるかどうかわかります。これはしばらくの間固まっている。私は現在のログインしているユーザーがその特定のコースに登録されていることを示すコース表示ページにボタンを表示しようとしています。 (本質的には、サブスクリプションモデルにuser_idとcourse_idを追加するだけです)。Railsのshowページのボタンを使ってサブスクリプションモデルにユーザーを追加する
私は完全に間違った方向に行っているかもしれません - 私はuser_idとcourse_idを取り込むことができるサブスクリプションモデルを作成しました。私は上記のデータをサブスクリプションモデルに入力できるようにするコースコントローラに登録クラスを作成しようとしています。私は新しいサブスクリプションコントローラを作ってそこから作業したくなかった。データを取得してサブスクリプションモデルで作成するコースコントローラで定義されたクラスを持つことは可能ですか?
DBをSQliteプログラムで手動で入力することができます。私は、登録ユーザーのこのデータを呼び出して、コースショーページの下部に表示することができます。私の問題は、登録ボタンを使ってこの追加を自動化することです。どんな助けもありがとう。コードが追加されました。
コースコントローラ:
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
レーキルートは、私にはよさそうだこれはこのことを示しています。
course_enroll POST /courses/:course_id/enroll(.:format) courses#enroll
表示するページ
<%= link_to "Enroll", course_enroll_path(@course), class: "btn-enroll" %>
ルーティングエラー
No route matches [GET] "/courses/1/enroll"
コースモデル
belongs_to :user
belongs_to :category
has_many :subscriptions
Userモデル
has_many :courses
has_many :subscriptions
サブスクリプションモデルで、私はそれがGETアクションを必要とするかもしれませんが、これについて移動する最良の方法は何かを理解し
class Subscription < ActiveRecord::Base
belongs_to :user
belongs_to :course
end
?または私はちょうどサブスクリプションコントローラを作成せず、これのためのコースコントローラを使用しようとする全く間違った方法を行っています。みんなありがとう。
はそんなにセバスティアンありがとうございます。私は方法について考えることを止めたことはありません。:方法を経路上の順序で実行するので、メソッドを取り上げなかったことを通知して実現します。私は大学からこれを覚えています。感謝万円。 また、私はサブスクリプションが作成されたが、データが入っていないことを知った後で、余分な訂正のために素晴らしいものを手にしていました。もう一度ありがとう。ヒーロー! – Bradley
こんにちはセバスチャン、それをマークしようとしましたが、私のレベルが十分に高くなければ、投票が記録されますが、公開されていません。答えにもう一度感謝します。 – Bradley
ああ、正直言って私はそれが受け入れられたボタンであることに気付かなかった。最近はそれほど価値があるとは思っていません。ここには初心者がいます。ありがとうセバスチャン。 – Bradley