好吧所以我对Rails很陌生,并试图做以下事情但没有成功:
我有一个包含项目的Object(来自我的Active Record),该项目包含n个子项目,其中包含n个任务。现在,对于每一个我想要一个局部视图。
所以我从项目视图中使用以下代码渲染子项目:
<%= render(:partial => 'subproject', :collection => @project.sub_projects) %>
在我的子项目局部视图中称为_subproject.rhtml(将代码添加到一个好的ol Rails 1.2.3项目中),所以我可以访问这样的数据:
<%= subproject.name %>
这将打印出名称,但是当我尝试生成文本字段时,这将无效:
<%= text_field 'subproject', 'name' %>
但这会:
<%= text_field 'subproject', 'name', :value => subproject.name %>
我做错了什么?
编辑:由于我的问题而更改的标题不是传递值,而是在表单字段中显示它。
Edit2:按照我的控制器代码要求:
@project = Project.find(params[:id])
答案 0 :(得分:3)
你可以这样写:
<%= render(:partial => 'subproject', :collection => @project.sub_projects) %>
作为
<%= render :partial => @project.sub_projects %>
这将为每个子项目呈现sub_projects/_sub_project.html.erb
部分。一点点捷径。
这:
<%= text_field 'subproject', 'name' %>
创建一个名为:subproject [name]的text_field,但不给它一个值。您需要传递要设置的值(有效的代码)。
现在更常用的方法是使用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 %>
我希望这有帮助!