尝试生成simple_form时遇到“未定义的方法”错误

时间:2015-05-03 08:38:32

标签: ruby-on-rails

我只是想尝试使用rails并开始我的第一个项目。我正在创建一个简单的项目,私人教练可以在健身房注册个人资料并寻找工作。 但是,当尝试导航到新的私人教练页面时,会弹出此错误:

undefined method `pts_path' for #<#<Class:0x5d14ef8>:0x5690b68>

我的私人教练控制器如下所示:

class PersonaltrainersController < ApplicationController


     def index
          @PT = Pt.all
      end

      def new
          @PT = Pt.new
      end

      def show
      end


      def create
      end

      def contact
      end

      def edit
      end
    end

在我有的路线文件中:

Rails.application.routes.draw do
 resources :personaltrainers
 root 'personaltrainers#index'
end

我的simple_form看起来像:

<%= simple_form_for @PT do |form| %>
    <%= form.input :name %>
    <%= form.input :age %>
    <%= form.input :sex %>
    <%= form.input :experience %>
<% end %>

personaltrainers_path   GET /personaltrainers(.:format) personaltrainers#index
POST    /personaltrainers(.:format) personaltrainers#create
new_personaltrainer_path    GET /personaltrainers/new(.:format) personaltrainers#new
edit_personaltrainer_path   GET /personaltrainers/:id/edit(.:format)    personaltrainers#edit
personaltrainer_path    GET /personaltrainers/:id(.:format) personaltrainers#show
PATCH   /personaltrainers/:id(.:format) personaltrainers#update
PUT /personaltrainers/:id(.:format) personaltrainers#update
DELETE  /personaltrainers/:id(.:format) personaltrainers#destroy
root_path   GET /   personaltrainers#index

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

indexnew方法应为:

def index
  @PT = Personaltrainer.all
end

def new
  @PT = Personaltrainer.new
end

顺便说一句,我们(ruby开发者)有一个约定使用小的大小写变量名,在more_than_one_word的情况下使用下划线。我们使用ALL_CAPS作为常量。

答案 1 :(得分:0)

将表单代码更改为:

<%= simple_form_for @PT, url: personaltrainers_path do |form| %>
    <%= form.input :name %>
    <%= form.input :age %>
    <%= form.input :sex %>
    <%= form.input :experience %>
<% end %>
undefined method pts_path'尝试从模型中创建网址时{p> simple_form_for被提出(pts它是pt模型的复数形式),但您的路由有另一个资源名称personaltrainers。所有你需要的,它通过显式url到表单助手,在这种情况下,它应该是你的路由文件personaltrainers_path