我有一个带有getAccounts函数的Controller,我在那里查找某些帐户。我的想法是先显示结果数,然后将结果数组发送到下一个名为showAccounts的函数,该函数生成视图。首先,我将结果数组声明为实例变量。然后我尝试使用表单标签发送。它不起作用......有人有想法吗?
def getAccounts
filter = '(uid='+params[:id]+')'
attrs = ['*']
@accounts=Array.new
conn = LDAP::Conn.new($HOST, $PORT)
conn.bind('cn=admin, dc=cippool-mb, dc=rwth-aachen, dc=de','DLPins!')
conn.perror("bind")
begin
conn.search($base, $scope, filter, attrs) { |entry|
setAttributes(entry)
}
rescue LDAP::ResultError
conn.perror("search")
exit
end
conn.perror("search")
conn.unbind
end
def showAccounts
end
我发送数据的视图。
Es wurden <%= @accounts.size %> Accounts gefunden.
<%= form_tag :action => "showAccounts" do %>
<%= hidden_field_tag "accounts", @accounts %>
<%= submit_tag "Anzeigen" %>
<% end %>
我也可以将视图粘贴到需要此数组的位置,但我不认为它与此问题相关。我使用Rails 3.2.7和Ruby 1.9.2p0
答案 0 :(得分:1)
如果您调试(@accounts),您将看到它传递的内容 - 类似于&lt;#0x7187237 Array&gt;这不是你想要的!
如果确实想要传入帐户数组,则需要将其序列化为文本格式以放入隐藏字段。如果@accounts很大,这可能是一大块数据。
也就是说,您可以将其转储到YAML或JSON,或者使用Ruby中的一个序列化函数,或者将其放入您自己的自定义文本格式(不推荐)。请记住,在使用之前需要在下一页上反序列化。
我假设想要将其传递到下一步的一部分是避免昂贵的LDAP请求。您可能希望查看放置轻量级缓存(例如redis)来临时存储请求。
答案 1 :(得分:1)
如果您想在不同的请求之间传递大量数据,我建议使用会话,它就是为此而设计的。