我正在使用表单来过滤没有链接到AR对象的字段的记录。提交表单时,我想显示记录并使用先前输入的值填充表单,以便用户可以看到过滤参数。 表格示例:
= form_tag businesses_path, method: 'get' do
.field
= label_tag :title, 'Title'
= text_field_tag :title, params[:title]
= button_tag do
'Submit'
我正在考虑使用params
填充表单输入但不确定它是否安全?或者可能有更好的解决方案?
答案 0 :(得分:1)
由于我们使用Rails处理RESTful接口,因此params hash本质上是前端(浏览器)和后端之间消息中的数据。它用于在后端用户前端和控制器之间中继数据。 params hash是RoR中最重要和最通用的工具之一。
来自Rails指南:http://guides.rubyonrails.org/action_controller_overview.html#hash-and-array-parameters
您可能希望访问用户发送的数据或控制器操作中的其他参数。 Web应用程序中有两种可能的参数。第一个是作为URL的一部分发送的参数,称为查询字符串参数。查询字符串是“?”之后的所有内容在URL中。 第二种类型的参数通常称为POST数据。此信息通常来自用户填写的HTML表单。它被称为POST数据,因为它只能作为HTTP POST请求的一部分发送。 Rails没有对查询字符串参数和POST参数进行任何区分,并且两者都可以在控制器的params哈希中使用:
所以使用params哈希;这是一个缓存用户输入并重新显示它的声音方法,就像你的问题一样。
<强>买者强>
当然,如果您是从哈希而不是数据库存储本身进行显示,则可能会遇到数据同步问题。但就您的具体问题而言,我会说使用params没有第二个想法的哈希。
答案 1 :(得分:0)
绝对没问题。 Rails将清理它自己的任何东西。当您打印&#34; raw&#34;时,请不要致电params[:title].html_safe
用户输入。
答案 2 :(得分:0)
您可以将该参数存储在各个控制器操作中的实例变量中,例如在控制器中流动。
def test_action
@title = params[:title]
end
然后将@title设置为字段值为
= text_field_tag :title, @title