gpt4 book ai didi

ruby-on-rails - Rails 局部 View 设置表单域的值

转载 作者:行者123 更新时间:2023-12-04 06:41:04 26 4
gpt4 key购买 nike

好的,所以我对 Rails 很陌生,我正在尝试执行以下操作但没有成功:

我有一个包含项目的对象(来自我的 Active Record),其中包含 n 个子项目,其中包含 n 个任务。现在,对于这些中的每一个,我都想要一个局部 View 。

所以我从项目 View 中使用以下代码渲染子项目:

<%= render(:partial => 'subproject', :collection =>  @project.sub_projects) %>

在我名为 _subproject.rhtml 的子项目部分 View 中(将代码添加到一个好的 ol Rails 1.2.3 项目),所以我可以像这样访问数据:
<%= subproject.name %>

这将打印出名称,但是当我尝试生成文本字段时,这将不起作用:
<%= text_field 'subproject', 'name' %>

但这将:
<%= text_field 'subproject', 'name', :value => subproject.name %>

我究竟做错了什么?

编辑:由于我的问题而更改的标题不是传递值而是在表单字段中显示它。

Edit2:根据要求我的 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] 的 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 %>

我希望这有帮助!

关于ruby-on-rails - Rails 局部 View 设置表单域的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4226862/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com