检查 rails ruby 中提交的表单值

Check form submitted values in ruby on rails

在我的 rails 应用程序中,我在 /addfiles 上有一个表单,用户可以在其中的文本框中添加文件路径,并将此表单提交给 /remotefiles

我创建了一条路线match '/remotefiles' => 'main#remotefiles'

并在主控制器中发挥作用

def remotefiles
    render layout: false
end

并在views/main

中添加remotefiles.html.haml

如何在远程文件上显示这些提交的值,我认为可以用 render 完成,但不确定如何使用它来传递表单值并在视图中显示它们。

有没有办法像 php print_r 函数一样在 rails 上检查 ruby 中的表单数据?

您的表单数据通过 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.