ruby-on-rails - rails : pass 2-d array to link_to

标签 ruby-on-rails ruby multidimensional-array

我有一个 Controller querys,带有一个操作send_file。 查询 Controller .rb

def send_file
    send_data(params[data], :filename => "query.txt")
end

在 html.erb 中我有:

<%=link_to "send data", :controller=>"querys", :action=>"send_file", :data=>@mat, method: :post%>

通过单击“发送数据”,rails 显示“错误的请求”,因为@mat 是一个二维数组,而且我的 link_to 似乎无法发送此类结构。如何将我的矩阵发送到我的 Controller ?

@mat:  
[["1681", "", "02.05.1955"], ["1680", "", "02.03.1936"], ["1679", "", "26.11.1938"], ["1692", "", "15.05.1958"]]

最佳答案

@Tonja,对我来说,你在做什么似乎很奇怪。首先,您在某处生成一个数组,然后再次使用浏览器将其传递回您的应用程序。然后以文本格式将其发送回浏览器? 您不应将此数组传递给用户,而应将其保存在服务器上。只需将其存储在数据库中即可。仅在绝对必要时才将数据传递给用户。您当前的实现还迫使您对传递的数据进行相当多的检查。

在生成 html.erb 的 Controller 方法中,将 @mat 实例存储在某处,并获取记录的 ID。将此 ID 传递给 link_to,并将数据库中的此数据用作 send_data 调用的参数。

(小提示:不要实际使用 ID,那样不安全,而是使用随机值。或者更好:如果可以将值附加到 current_user,则根本不要传递任何内容)。

您收到 Bad Request 是因为 Rails 不理解您请求的格式。那是因为你自己组装了 url。使用像

这样的调用
link_to "send file", send_file_querys_path(format: :txt)

甚至是

button_to ....

如果是POST操作。

您可以使用'rake routes'获得有效的路线。这使您的应用更易于测试。

我希望我的回答能帮助您重新编写代码。如果您的做法是正确的,那么@m_x 会为您提供正确的指导。

最好的问候,

雨果

关于ruby-on-rails - rails : pass 2-d array to link_to,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30845575/

相关文章:

ruby-on-rails - Rails 4 after_validation 错误消息通用 'is invalid'

ruby-on-rails - rails : Loading schema into secondary database

ruby - CSV 仅返回字符串。我需要保留值类型

C:如何将不同大小的文本文件的每一行存储到 int 数组中?

php - 在PHP中的每个级别递归排序多维数组

javascript - 工作 jQuery 代码在条件内不起作用

ruby - 使 friendly_id 范围与子类 ActiveRecord 模型配合得很好

ruby-on-rails - Ruby on Rails Win7 x64?

ruby - ruby 中二维数组的 for 循环问题

javascript - 如何使用我的 javascript 函数摆脱周末约会?