小编rob*_*rty的帖子

为什么我的Rails多选中第一个元素总是空白,使用嵌入式数组?

我正在使用Rails 3.2.0.rc2.我有一个Model,我有一个静态Array,我通过一个表格提供,用户可以选择一个子集Array并将他们的选择保存到数据库,存储在一个列中Model.我在数据库列上使用了serialize,它存储了ArrayRails并正确地将用户的选择转换为Yaml(并在读取该列时返回到数组).我正在使用多选表单输入来进行选择.

我的问题是,我现在拥有它的方式,一切都按照我的预期工作,除了用户的子集数组在发送到服务器时总是有一个空白的第一个元素.

这不是什么大不了的事,我可以编写代码来解决这个事实,但我觉得我只是在做一些语法错误,因为在我看来默认的Rails行为不是故意的添加此空白元素没有任何理由.我一定错过了什么或忘了禁用某种设置.请帮助我理解我所缺少的东西(或者指出一些描述这个的好文档,比我在intertubes上找到的更深入).

MySQL数据库表'模型':

  • 包括一个名为" subset_arrayTEXT"字段的列

类模型包括以下设置:

  • serialize :subset_array
  • ALL_POSSIBLE_VALUES = [value1, value2, value3, ...]

编辑表单模型包括以下输入选项:

  • f.select :subset_array, Model::ALL_POSSIBLE_VALUES, {}, :multiple => true, :selected => @model.subset_array

从客户端PUT到服务器看起来像这样:

  • 假设只选择了value1和value3
  • "model" => { "subset_array" => ["", value1, value3] }

数据库更新如下所示:

  • UPDATE 'models' SET 'subset_array' = '--- \n- \"\"\n- value1\n- value3\n'

正如您所看到的,数组中的这个额外的空白元素是在数据库中发送和设置的.我怎么摆脱它?我的f.select通话中是否缺少参数?

非常感谢赞赏:)

编辑:这是f.select语句生成的HTML代码.看起来好像有一个隐藏的输入被生成,这可能是我的问题的原因?那为什么?

<input name="model[subset_array][]" type="hidden" value>
<select id="model_subset_array" multiple="multiple" name="model[subset_array][]" selected="selected">
    <option …
Run Code Online (Sandbox Code Playgroud)

html forms serialization ruby-on-rails multi-select

81
推荐指数
5
解决办法
3万
查看次数

为什么PDFKit/wkhtmltopdf挂起但是在Rails应用程序被杀死时按预期呈现PDF?

背景

在阅读之后,在我看来Prawn已经出局并且wkhtmltopdf已经进入.看起来Rails 的PDFKitwicked_pdf宝石也是新的酷.所以我发现了Ryan关于如何使用PDFKit的截屏视频.我安装了所有东西,在CLI上测试wkhtmltopdf没有任何问题,摆弄Rails设置运行多个进程,所以资产管道工作,一切似乎都很好,除了我仍然停留在过程的最后(实际上得到PDF来自服务器的响应).

当我请求.pdf我的视图版本(我正在使用PDFKit中间件选项)时,我的浏览器就坐在那里等待响应,但是一旦我杀死了Rails进程,我希望得到的PDF只会在我的浏览器中弹出窗口.是什么赋予了?

我在用什么

  • 操作系统:OSX 10.8.1
  • Rails:3.2.8
  • Ruby:1.9.3
  • wkhtmltopdf:0.11.0_rc1(虽然当我运行wkhtmltopdf -V它时说0.10.0_rc2)
  • qt:4.8.2

我做了什么

  • 通过加载config.middleware.use "PDFKit::Middleware"我的application.rb文件使用PDFKit中间件.
  • 包含gem 'pdfkit'在我的Gemfile中并与Bundler一起安装
  • .pdf用我的mime_types.rb初始化程序设置mime-typeMime::Type.register_alias "application/pdf", :pdf
  • 添加config.threadsafe!config/environments/development.rb多个线程,因此资产管道不与PDF引擎冲突
  • 经过测试wkhtmltopdf http://www.google.com google.pdf,它按预期生成了Google主页的PDF
  • 尝试交换wicked_pdf的PDFKit并遇到同样的问题(挂起,但是当Rails进程被杀死时,PDF会按预期呈现)

它看起来像什么

这是由Rails呈现的常规html页面(我已经模糊了客户端详细信息): 在此输入图像描述

当我尝试导航到时,这是Rails的CLI输出localhost:3000/some/path.pdf.(应用程序在等待响应时挂起): 在此输入图像描述

当我最终杀死Rails进程时ctrl-c,PDF终于出现在浏览器中,因为我期望看到它(CSS和HTML正确呈现,所以资产似乎加载正常): 在此输入图像描述

结论到目前为止

为wicked_pdf交换PDFKit并获得相同的结果似乎让我觉得问题不在于那些库,而是与我的开发环境有关.但是wkhtmltopdf在命令行中运行良好,这让我觉得它和QT正在完成它们的工作.问题必须在Rails中.也许我没有正确配置?

请求帮助

如何确定问题到底是什么以及如何解决?

如果你能帮助我,我会爱你的<3

更新

我也尝试过使用另一种方法来渲染PDF(with .to_pdf)而没有中间件选项,如下所示(这样做我config.middleware.use "PDFKit::Middleware"从我的 …

pdf pdfkit wkhtmltopdf ruby-on-rails-3 osx-mountain-lion

37
推荐指数
2
解决办法
2万
查看次数