在Ruby on Rails的视图中显示以前从DB中添加的值

时间:2017-03-05 11:02:26

标签: ruby-on-rails ruby

我正在关注Ruby on Rails上的Lynda.com教程。在关注它时,当我被要求制作表单时,我使用普通的HTML代码而不是使用form_for方法。所以我的表单现在看起来像下面我使用了一组参数来传递值。由于这是我的edit.html.erb文件,我还声明了一个值字段,我将显示以前的数据值。

现在,如果我的名字等于"我的长名字"。仅在编辑视图中"我的"部分显示。即只显示主题名称的第一部分。

注意:我还有一个' show'查看我列出特定主题的详细信息。在那里正确显示全名("我的长名称")。

那么为什么我不能在这里工作?

<!DOCTYPE html>
<html>
<head></head>
<body>

  <%= csrf_meta_tags %>
  <div class="subjects index">
    <h2>Update Subject</h2>   
    <form action="/subjects/<%= @subject.id %>" method="post">
      <input type="hidden" name="_method" value="patch" /> 
      <div class="row">
        <div class="input-field col s12 l5">
          <input id="name" name="subject[name]" value= <%= @subject.name %> type="text" class="validate" >
          <label for="name" data-error="wrong" data-success="right">Name</label>
        </div>
      </div>
      <div class="row">
        <input type="submit" value="Update Subject" />
      </div>

      <%= link_to("Back",'/subjects',:class => 'action index') %>
    </form>
  </div>

</body>
</html>

3 个答案:

答案 0 :(得分:1)

<input id="name" name="subject[name]" value="<%= @subject.name %>" type="text" class="validate" >

或者换句话说,输入的'值'应该用引号括起来。

答案 1 :(得分:1)

在名称输入的value参数之后,似乎缺少引号。

如果没有它们,您将获得HTML:<input id="name" name="subject[name]" value=My long name type="text" class="validate" >

因此,longname也会将它们归为自我属性(它们是HTML5中有效的自定义有效属性)。

它应该像这样工作:  <input id="name" name="subject[name]" value="<%= @subject.name %>" type="text" class="validate" >

但请使用内置的forminput助手,这被视为最佳做法。它们可以轻松生成所有必需的HTML。

答案 2 :(得分:0)

为什么不能使用Rails&#39;内置form_for帮助方法? Rails用于使用ruby生成HTML dynamicaly,而不是手动创建HTML。 那你只需要:

<%= render 'form', subject: @subject %>

可自动解决您的问题