0

has_many:throughとbelongs_toに関するモデル間の関係を整理しました。また、移行を使用して、必須のidフィールドをデータベーステーブルに追加しました。

私の質問は:ユーザーがリンクをクリックした後:

<%= link_to "subscribe", new_subscription_path(feed_url: @feed.feed_url)%>

私は新しい方法でこれを行います:

def new
    feed_url = params[:feed_url]
    @subscription = Subscription.new

    redirect_to reader_url, notice: "You are now subscribed to: "+Feed.find_by_feed_url(feed_url).title
  end

サブスクライブリンクでサブスクリプションテーブルに新しい行を作成する必要があるため、createメソッドを呼び出す方法と場所を正確に把握できません。

また、私のテーブルが正しいことを確認するために、ここに私の関連付けがあります。

User has_many :feeds, :through => :subscriptions, dependent: :destroy

|ユーザーテーブルには列があります:id

Subscription belongs_to :feed
Subscription belongs_to :user

|サブスクリプションテーブルには、id、user_id、feed_idの列があります

Feed has_many :users, :through => :subscriptions

|フィードテーブルには列があります:id

4

1 に答える 1

4

あなたはRESTのアイデア全体を破ったばかりです)

newアクションは、作成されているリソースの詳細を入力するためのフォームをユーザーに表示するために作成されます。HTTP動詞GET(ログでアクションを確認できますnew)でさえ、リソースを変更してはならないアクションを開始すると言っています。

フォームが必要ない場合は、createアクションへの直接の「アクセサー」を作成できます。link_toただし、JavaScriptを有効にしないと、ユーザーが適切にクリックできないため、経由しないでください。使用button_to

button_to 'Create', resources_path(your_params)

次に、アクション内で作成自体を定義しますcreate

于 2012-05-07T19:16:41.403 に答える