ruby-on-rails - Rails 部分 View 设置表单字段的值

标签 ruby-on-rails partial-views

好吧,我对 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/

相关文章:

jquery - 如何使用 jQuery 将 JSON 数据放入 Ruby on Rails?

ruby-on-rails - Rails dup 和 clone 方法有什么区别?

asp.net-mvc - MVC错误页面在部分 View 中加载

c# - ASP.NET MVC 4 默认 _LoginPartial 模板注销不工作

css - 在部分 View 和内容页面中查看 CSS Intellisense - Visual Studio 2010?

ruby-on-rails - 工厂机器人与命名空间模型故障的关联

ruby-on-rails - 如何使用 Rspec 测试wash_out Controller

ruby-on-rails - 一次渲染 n 个对象,插入代码然后重复接下来的 n 个对象 - Rails

php - zf2 mvc 事件监听器或策略

ruby-on-rails - rails : Rendering partial in div on click