我正在使用Rails 3.2.0.rc2.我有一个Model
,我有一个静态Array
,我通过一个表格提供,用户可以选择一个子集Array
并将他们的选择保存到数据库,存储在一个列中Model
.我在数据库列上使用了serialize,它存储了Array
Rails并正确地将用户的选择转换为Yaml(并在读取该列时返回到数组).我正在使用多选表单输入来进行选择.
我的问题是,我现在拥有它的方式,一切都按照我的预期工作,除了用户的子集数组在发送到服务器时总是有一个空白的第一个元素.
这不是什么大不了的事,我可以编写代码来解决这个事实,但我觉得我只是在做一些语法错误,因为在我看来默认的Rails行为不是故意的添加此空白元素没有任何理由.我一定错过了什么或忘了禁用某种设置.请帮助我理解我所缺少的东西(或者指出一些描述这个的好文档,比我在intertubes上找到的更深入).
subset_array
TEXT"字段的列serialize :subset_array
ALL_POSSIBLE_VALUES = [value1, value2, value3, ...]
f.select :subset_array, Model::ALL_POSSIBLE_VALUES, {}, :multiple => true, :selected => @model.subset_array
"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) 在阅读之后,在我看来Prawn已经出局并且wkhtmltopdf已经进入.看起来Rails 的PDFKit和wicked_pdf宝石也是新的酷.所以我发现了Ryan关于如何使用PDFKit的截屏视频.我安装了所有东西,在CLI上测试wkhtmltopdf没有任何问题,摆弄Rails设置运行多个进程,所以资产管道工作,一切似乎都很好,除了我仍然停留在过程的最后(实际上得到PDF来自服务器的响应).
当我请求.pdf
我的视图版本(我正在使用PDFKit中间件选项)时,我的浏览器就坐在那里等待响应,但是一旦我杀死了Rails进程,我希望得到的PDF只会在我的浏览器中弹出窗口.是什么赋予了?
wkhtmltopdf -V
它时说0.10.0_rc2)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这是由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"
从我的 …