如何使用表单在ruby轨道上保存文本字段的输入

时间:2014-08-12 19:39:50

标签: jquery ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4

我需要保存从用户那里获得的输入,但是我发现了一个以旧的格式工作的代码,

文件:public \ input.html,添加以下代码:

<html>
  <head>
    <title>Using Text Fields</title>
  </head>
  <body>
    <h1>Working With Text Fields</h1>
    This Ruby on Rails application lets you read data from text fields.
    <br>
    <form action = "/hello/there" >
      Please enter your name.
      <br>
      <input type="text" name="text1">
      <br>
      <br>
      <input type="submit"/>
    </form>
  </body>
</html>

文件:app \ controllers \ hello_controller.rb:

class HelloController < ApplicationController
  def there
    @data = params[:text1]
  end
end

文件:app \ views \ hello \ there.rhtml:

<html>
  <head>
    <title>Reading data from text fields</title>
  </head>
  <body>
    <h1>Reading data from text fields</h1>
    This Ruby on Rails application reads data from text fields.
    <br>
    <br>
    Your name is <%= @data %>.
    <br>
    <br>
  </body>
</html>

Start the WEBrick server: ruby script/server
Navigate to http://localhost:3000/input.html

这是代码片段,说实话它就像魅力一样,但在当前的rails api中它给了我这样的东西:

<!--
<form action = "home/omg" >

  <%= label_tag(:text1, "Enter the message:") %>
  <%= text_field_tag :text1 %>
  <%= submit_tag"submit" %>
-->

那么差异是什么,我如何使用给定的输入,

我想要和需要的是当用户点击按钮 - 提交按钮 - 获取文本字段中的文本并将其用作我的家庭控制器中的字符串。我怎么能做到这一点?

2 个答案:

答案 0 :(得分:0)

唯一的区别是您在Rails指南中找到的代码使用Rails form helpers。表单助手将在服务器上进行评估,结果将发送到客户端,几乎与第一个示例中的结果完全相同。尝试使用表单助手,然后在浏览器中导航到您的应用程序。右键单击&#34; Inspect Element&#34;并且您将看到标准标记,类似于您所写的内容。

至于使用给定的输入,目前是不行的?我还没有测试过你的代码,但它看起来应该可行。如果字符串未显示在there.rhtml中,可以解释发生了什么吗?

答案 1 :(得分:0)

与建议的answer一样,查看Rails指南,了解Rails form helper form_tag的工作原理。

app/views/hello/edit.erb.html或您拥有表单的地方(赢得public/*.html工作,因为这些是静态资源)。使用ERB(输出HTML的嵌入式RuBy文件)中的form_tag,如:

<%= form_tag("/hello/there") do %>
  <%= label_tag(:text1, "Please enter your name") %>
  <%= text_field_tag :text1 %>
  <%= submit_tag %>
<% end %>

将输出HTML:

<form action="/hello/there">
  <label for="text1">Please enter your name</label>
  <input type="text" name="text1" id="text1" />
  <input type="submit" />
</form>