在为我的工作人员活动记录设置表单时遇到一些问题。我有一个用户has_many worker关系,并为worker提供了嵌套路由。我的表单代码位于视图的workers目录中的new.html.erb文件中。
<h1>Setup a Worker</h1>
<p>
Enter in the information below to connect your worker to our service.
</p>
<div class="row">
<div class="span6 offset3">
<%= form_for(@worker) do |w| %>
<%= w.label :name %>
<%= w.text_field :name %>
<%=w.label :ip_address, "Ip address of the worker" %>
<%=w.text_field :ip_address %>
<%= w.submit "Create Worker", class: "btn btn-medium btn-primary" %>
<% end %>
</div>
</div>
在我的工人控制器中,我有这个
class WorkersController < ApplicationController
def new
@worker = Worker.new
end
def show
end
end
但是当我尝试加载该页面时,我收到此错误
NoMethodError in Workers#new
它指向这一行
<%= form_for(@worker) do |w| %>
感谢您的帮助。
答案 0 :(得分:1)
<%= form_for[@user, @worker] do |w| %>
<%= w.label :name %>
<%= w.text_field :name %>
<%=w.label :ip_address, "Ip address of the worker" %>
<%=w.text_field :ip_address %>
<%= w.submit "Create Worker", class: "btn btn-medium btn-primary" %>
<% end %>
def new
@worker = Worker.new
@user = User.find(params[:id]) or some other way to load the user
end
答案 1 :(得分:0)
正如rmagnum所说,你也需要嵌套你的表单,所以rails可以构建你建立的关系,当我使用表单我喜欢使用名为simple_form的gem时,你可以在这里查看这个railscast:http://railscasts.com/episodes/234-simple-form ,这肯定有助于分配关系。