好吧,我对 Rails 还很陌生,我正在尝试执行以下操作,但没有成功:
我有一个对象(来 self 的 Active Record),其中包含一个项目,该项目包含 n 个子项目,其中包含 n 个任务。现在,对于其中的每一个,我都想要一个部分 View 。
因此,我使用以下代码从项目 View 渲染子项目:
<%= render(:partial => 'subproject', :collection => @project.sub_projects) %>
在我的子项目部分 View 中,名为 _subproject.rhtml (将代码添加到一个好的 ol Rails 1.2.3 项目中),这样我就可以像这样访问数据:
<%= subproject.name %>
这将打印出名称,但是当我尝试生成文本字段时,这将不起作用:
<%= text_field 'subproject', 'name' %>
但这会:
<%= text_field 'subproject', 'name', :value => subproject.name %>
我做错了什么?
编辑:由于我的问题不是传递值而是在表单字段中显示它,所以更改了标题。
编辑2:根据要求我的 Controller 代码:
@project = Project.find(params[:id])
最佳答案
你可以这样写:
<%= render(:partial => 'subproject', :collection => @project.sub_projects) %>
作为
<%= render :partial => @project.sub_projects %>
这将使用 sub_projects/_sub_project.html.erb
部分渲染每个子项目。一个小捷径。
这个:
<%= text_field 'subproject', 'name' %>
说创建一个名为:subproject[name] 的文本字段,但没有给它赋值。您需要传递要设置的值(有效的代码)。
现在更惯用的方法是使用 form_for:
<% form_for @subproject do |f| %>
<%= f.text_field :name %>
<% end %>
或者,如果您使用的是 formtastic (https://github.com/justinfrench/formtastic),这非常棒,您可以这样写:
<% semantic_form_for @subproject do |f| %>
<%= f.input :name %>
<% end %>
希望这会有所帮助!
关于ruby-on-rails - Rails 部分 View 设置表单字段的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4226862/