带有预填充文本和自定义参数的text_field_tag

时间:2011-12-23 08:52:16

标签: view ruby-on-rails-3.1

我正试图在我的一个观点中使用它:

<%= text_field_tag :sources, "Test", params[:sources] %>

但是我为nil得到了未定义的方法'stringify_keys':NilClass。代码

<%= text_field_tag :sources, "Test" %>

工作正常并使用“Test”预先填充框(但不能正确传递params),而代码

<%= text_field_tag :sources, params[:sources] %>

正确传递params但没有我需要的文本“Test”。

有没有人知道语法或解决方法?

1 个答案:

答案 0 :(得分:2)

您正在寻找的语法是documented

  

text_area_tag (name,content = nil,options = {})

您的代码存在的问题是,给定三个参数text_field_tag期望第三个参数为哈希,但params[:sources]正在提供nil。你期望它能保持不同的价值吗? params设置在哪里,它包含什么?

如果您知道params[:sources]有时会包含哈希,而其他时间为nil(即未设置),那么您可以使用例如:

<%= text_field_tag :sources, "Test", params[:sources] || {} %>
只要params[:sources] || {}是假的(例如{}),

params[:sources]将评估为空哈希(nil),这样可以避免错误。