在我的rails应用上,我在/addfiles
上有一个表单,用户可以在文本框中添加文件路径,此表单将提交给/remotefiles
我创建了一条路线match '/remotefiles' => 'main#remotefiles'
并在主控制器中运行
def remotefiles
render layout: false
end
并在views / main
中添加remotefiles.html.haml
如何在remotefiles上显示这些提交的值,我认为可以使用render
完成,但不知道如何使用它来传递表单值并在视图中显示它们。
有没有办法像在php print_r
函数一样在rails上检查ruby中的表单数据?
答案 0 :(得分:1)
您的表单数据是通过params
哈希传入的。最简单的回应方式是
# MainController
def remotefiles
render json: params
end
如果您的表单包含名为foo
和bar
的字段,您将看到这些以及Rails添加的一些参数:
{
"foo": 1,
"bar": 2,
"controller": "Main",
"action": "remotefiles"
}
如果要将它们渲染为真实模板,请将HTML写入app/views/main/remotefiles.html.erb
。默认情况下,Rails将呈现与您的控制器和操作匹配的模板,或者如果您想要另一个模板,则可以将Rails指示为render "path/to/other/template"
。您的模板也可以访问params
,但将数据传递给它们的更典型方法是在控制器中设置实例变量。
# MainController
def remotefiles
@foo = params[:foo]
@bar = params[:bar]
end
# app/views/main/remotefiles.html.erb
<strong>Foo</strong> is <%= @foo %>
<strong>Bar</strong> is <%= @bar %>
最后,如果您实际上并不想将表单数据呈现给浏览器,只需在开发期间检查它,Rails.logger
会将其打印到您的服务器日志中。
# MainController
def remotefiles
Rails.logger.info(params[:foo], params[:bar])
end
您应该了解Rails的工作原理 - 入门指南非常明确且有用。这是the one on rendering。