Rails 多条记录 select 并应用多个操作
Rails multiple records select and apply multiple actions
我是 rails 的新手,我在设计管理仪表板时遇到了一些问题。
我要实现的是:
从数据库中获取多个用户的列表。
能够select多条记录。
能够对所有
select 编辑记录。
操作可能无法直接翻译成 SQL 查询。 (例如发送电子邮件)
我不是在寻找问题的完整解决方案,只是对如何解决这个问题的一般描述。我感觉我走错了路。
到目前为止我正在这样做:
查看
<%= form_tag("some_path", method: "get") do %>
<% @users.each do |user| %>
<%= check_box_tag "user_ids[]", users.id %>
<%end%>
<%= submit_tag("Send Email") %>
<%end%>
控制器
def send_email
@recipients = User.find(params[:user_ids])
@recipients.each do |recipient|
Notifier.raw_email(recipient.email, params[:user_email][:subject], params[:user_email][:body]).deliver
end
end
这按原样工作,但我只能应用一个操作,即发送电子邮件。
我希望能够选择一个操作应用于所有 selected 记录或将多个操作应用于 selected 记录
有什么想法吗?
您可以使用包含您需要的不同操作的 select 标签。
然后在更改 select 标记时,您可以更新表单的 action 属性。例如,使用 jQuery.
$('#my-action-select').change(function() {
$('#myform').attr('action', $(this).val)
})
您可以使用send
方法来调用模型的方法。
class User
def send_email(subject, body)
Notifier.raw_email(self.email, subject, body).deliver
end
end
让/some_path
也接受actions
的数组
在我们的案例中 actions = ['send_email']
在 some_path
解决的操作中,
class SomeController < ActionController::Base
def some_action # that some_path resolves to in your config/routes.rb
@recipients = User.find(params[:user_ids])
@actions = params[:actions]
@recipients.each do |recipient|
@actions.each do |action|
recipient.send(action, params[:subject], params[:body])
end
end
end
end
这样可以调用多个方法。确保您只接受有效的 action
值,否则管理员可以简单地调用用户的任何方法。
我是 rails 的新手,我在设计管理仪表板时遇到了一些问题。
我要实现的是:
从数据库中获取多个用户的列表。
能够select多条记录。
能够对所有 select 编辑记录。
操作可能无法直接翻译成 SQL 查询。 (例如发送电子邮件)
我不是在寻找问题的完整解决方案,只是对如何解决这个问题的一般描述。我感觉我走错了路。
到目前为止我正在这样做:
查看
<%= form_tag("some_path", method: "get") do %>
<% @users.each do |user| %>
<%= check_box_tag "user_ids[]", users.id %>
<%end%>
<%= submit_tag("Send Email") %>
<%end%>
控制器
def send_email
@recipients = User.find(params[:user_ids])
@recipients.each do |recipient|
Notifier.raw_email(recipient.email, params[:user_email][:subject], params[:user_email][:body]).deliver
end
end
这按原样工作,但我只能应用一个操作,即发送电子邮件。 我希望能够选择一个操作应用于所有 selected 记录或将多个操作应用于 selected 记录
有什么想法吗?
您可以使用包含您需要的不同操作的 select 标签。
然后在更改 select 标记时,您可以更新表单的 action 属性。例如,使用 jQuery.
$('#my-action-select').change(function() {
$('#myform').attr('action', $(this).val)
})
您可以使用send
方法来调用模型的方法。
class User
def send_email(subject, body)
Notifier.raw_email(self.email, subject, body).deliver
end
end
让/some_path
也接受actions
在我们的案例中 actions = ['send_email']
在 some_path
解决的操作中,
class SomeController < ActionController::Base
def some_action # that some_path resolves to in your config/routes.rb
@recipients = User.find(params[:user_ids])
@actions = params[:actions]
@recipients.each do |recipient|
@actions.each do |action|
recipient.send(action, params[:subject], params[:body])
end
end
end
end
这样可以调用多个方法。确保您只接受有效的 action
值,否则管理员可以简单地调用用户的任何方法。