在rails上的ruby中检查表单提交的值

时间:2015-07-26 14:48:26

标签: ruby forms ruby-on-rails-3

在我的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中的表单数据?

1 个答案:

答案 0 :(得分:1)

您的表单数据是通过params哈希传入的。最简单的回应方式是

# MainController
def remotefiles
  render json: params
end

如果您的表单包含名为foobar的字段,您将看到这些以及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