0

我想知道对我的模型进行小更新的最佳方法是什么。我的意思是我想要一个按钮,通过 has_many :through 关系创建或破坏我的两个模型之间的关系。所以我有用户、Dvds、队列和 DvdQueues。

我想在很多页面上添加一个简单的按钮,当点击这些按钮时,会在用户队列中添加一个 DVD。实现这一目标的最佳方法是什么?我应该在每个页面上加载一个简单的表单吗?我应该将按钮链接到处理它的控制器操作吗?如果我确实使用表单,我需要嵌套属性吗?

谢谢!

4

2 回答 2

1

最简单的方法是对 DvdQueues 使用单独的控制器,仅使用创建/销毁操作,然后在视图中使用带有Rails javascript-helper :method 的link_to (在这种情况下为:post|:delete)

例如:

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_to( doc ) 助手。你也可以使用ajax。只需remote: true向按钮添加选项并使用add_dvd和处理您的响应:)

于 2012-06-21T17:41:09.203 回答