form_for()没有方法错误

时间:2013-06-12 19:55:37

标签: ruby-on-rails-3 rest web-applications

在为我的工作人员活动记录设置表单时遇到一些问题。我有一个用户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| %>

感谢您的帮助。

2 个答案:

答案 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 ,这肯定有助于分配关系。