我有一个 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/