0

为我的工作人员活动记录设置表单时遇到一些问题。我有一个用户 has_many 工人关系,并且有工人的嵌套路线。我的表单代码位于视图工作目录中的 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| %>

谢谢您的帮助。

4

2 回答 2

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
于 2013-06-12T19:58:58.923 回答
0

正如 rmagnum 所说,你还需要嵌套你的表单,所以 rails 可以建立你建立的关系,当我使用表单时,我喜欢使用一个名为 simple_form 的 gem,在这里你可以查看这个 railscasts:http: //railscasts.com/ episodes/234-simple-form,它确实有助于分配关系。

于 2013-06-12T20:02:41.557 回答