我正在关注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>
答案 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" >
因此,long
和name
也会将它们归为自我属性(它们是HTML5中有效的自定义有效属性)。
它应该像这样工作:
<input id="name" name="subject[name]" value="<%= @subject.name %>" type="text" class="validate" >
但请使用内置的form
和input
助手,这被视为最佳做法。它们可以轻松生成所有必需的HTML。
答案 2 :(得分:0)
为什么不能使用Rails&#39;内置form_for
帮助方法? Rails用于使用ruby生成HTML dynamicaly,而不是手动创建HTML。
那你只需要:
<%= render 'form', subject: @subject %>
可自动解决您的问题