对不起,对于半通用标题,但我仍然很新的轨道,并不能想出一个简洁的方式来提出这个问题。Rails拥有和属于许多形式的问题
我有一个基本的habtm模型设置:一个项目有很多资源,一个资源可以有很多项目。我已经正确地设置了数据库和模型,并且可以通过控制台执行所需的任何操作,但是我无法将其全部转换为视图。
关于该项目的show
视图,我希望能够创建资源并自动将其分配给当前项目。这里是我的基本的html:
<p>
<b>Name:</b>
<%=h @project.name %>
</p>
<h2>Equipment</h2>
<ul>
<% @project.resources.each do |r| %>
<li><%=h r.name %></li>
<% end %>
</ul>
<h2>Add A Resource</h2>
<% form_for(@project) do |f| %>
<%= f.error_messages %>
<p>
Resource Name:<br />
<%= f.text_field :resources %>
</p>
<p>
<%= f.submit 'Create' %>
</p>
<% end %>
显然,这种形式是行不通的,但我在为下一步做什么损失。我搜索了各种各样的例子,但没有找到我想要在这里做的。
我想到的一件事是改变形式为form_for(Resource.new)
,并包括一个隐藏的输入@project.id
。然后当resource_controller
处理表单时,请检查该ID并从那里开始。这看起来像一个丑陋的kludge。
这有帮助,我越来越近!在我的project_controller中,这个参数被传递:'project'=> {“resources”=> {“name”=>“New Resource”}}'我怎样才能建立一个新的资源对象?我试过“@new_resource = @ project.resources.build(params [:resources])“但没有奏效。再次感谢。 – swilliams 2010-06-14 19:24:21
我相信正确的是@ project.resources.build(params [:project] [:resources])' – 2010-06-14 19:38:25
哈,是的,我只是想到了我自己,谢谢。 – swilliams 2010-06-14 19:53:22