我想知道对我的模型进行小更新的最佳方法是什么。我的意思是我想要一个按钮,通过 has_many :through 关系创建或破坏我的两个模型之间的关系。所以我有用户、Dvds、队列和 DvdQueues。
我想在很多页面上添加一个简单的按钮,当点击这些按钮时,会在用户队列中添加一个 DVD。实现这一目标的最佳方法是什么?我应该在每个页面上加载一个简单的表单吗?我应该将按钮链接到处理它的控制器操作吗?如果我确实使用表单,我需要嵌套属性吗?
谢谢!
我想知道对我的模型进行小更新的最佳方法是什么。我的意思是我想要一个按钮,通过 has_many :through 关系创建或破坏我的两个模型之间的关系。所以我有用户、Dvds、队列和 DvdQueues。
我想在很多页面上添加一个简单的按钮,当点击这些按钮时,会在用户队列中添加一个 DVD。实现这一目标的最佳方法是什么?我应该在每个页面上加载一个简单的表单吗?我应该将按钮链接到处理它的控制器操作吗?如果我确实使用表单,我需要嵌套属性吗?
谢谢!
最简单的方法是对 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
您可以add_dvd
向必要的控制器添加操作并使用button_to
( doc ) 助手。你也可以使用ajax。只需remote: true
向按钮添加选项并使用add_dvd
和处理您的响应:)