0

モデルに小さな更新を行うための最良の方法は何でしょうか。つまり、has_many:throughリレーションシップを介して、2つのモデル間のリレーションシップを作成または破棄するボタンが必要です。だから私はユーザー、DVD、キュー、そしてDvdQueuesを持っています。

多くのページにシンプルなボタンを追加して、クリックするとDVDをユーザーキューに追加したいと思います。これを達成するための最良の方法は何ですか?各ページに簡単なフォームをロードする必要がありますか?ボタンを、それを処理するコントローラーアクションにリンクする必要がありますか?フォームを使用する場合、ネストされた属性が必要ですか?

ありがとう!

4

2 に答える 2

1

最も簡単な方法は、作成/破棄アクションだけでDvdQueuesに個別のコントローラーを使用し、次にRails javascript-helper:method(この場合は:post |:delete)でlink_toを使用するビューで使用することです。

例えば:

class DvdQueuesController < ApplicationController
  def create
    # params[:dvd_queue] = {"dvd_id": x, "queue_id": y}
    @user.dvd_queues.create params[:dvd_queue]
    redirect_to dvds_path
  end

  def destroy
    dvd_que = @user.dvd_queues.find_by_id params[:id]
    dvd_que.destroy
    redirect_to dvds_path
  end
end

 

module DvdQueuesHelper
  def link_to_add_or_remove_from_queue(dvd, text)
    if @user.dvd_queues.exists? :dvd_id => dvd.id
      link_to text, dvd_queues_path(dvd.id), :method => :delete
    else
      link_to text, dvd_queues_path, :method => :post
    end
  end
end
于 2012-06-21T01:28:01.927 に答える
0

add_dvd必要なコントローラーにアクションを追加して、 button_todoc)ヘルパーを使用できます。また、ajaxを使用することもできます。remote: trueボタンにオプションを追加しadd_dvd、応答を処理して処理するだけです:)

于 2012-06-21T17:41:09.203 に答える