我想知道对我的模型进行小更新的最佳方法是什么。我的意思是我希望有一个按钮通过has_many:through关系创建或破坏我的两个模型之间的关系。所以我有用户,Dvds,队列和DvdQueues。
我想在很多页面上添加一个简单的按钮,点击后,将Dvd添加到用户队列。完成此任务的最佳方法是什么?我应该在每个页面上加载一个简单的表单吗?我应该将按钮链接到处理它的控制器操作吗?如果我使用表单,我是否需要嵌套属性?
谢谢!
答案 0 :(得分:1)
最简单的方法是使用单独的控制器为DvdQueues创建/销毁操作,然后在视图中使用link_to与the Rails javascript-helper :method(:post |:delete in this case)
例如:
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
答案 1 :(得分:0)
您可以向必要的控制器添加操作add_dvd
,并使用button_to
(doc)帮助程序。你也可以使用ajax。只需将remote: true
选项添加到按钮并使用add_dvd
并处理您的回复:)