Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails未定义的方法`model_name';零级:零级_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Rails未定义的方法`model_name';零级:零级

Ruby on rails Rails未定义的方法`model_name';零级:零级,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个小Rails站点,有2个控制器、讲师和请求。站点管理员只能访问讲师来管理和管理他们(所有方法都通过设备验证)。第二个控制器讲师是访问者访问站点的方式,以查看列出的讲师并为他们选择的讲师创建请求。我在创建新请求时遇到问题,这些请求应保存姓名、电话、电子邮件以及请求显示页面中选择的讲师id。我希望我的描述会很清楚 谢谢 请求控制器 class RequestsController“create”})do | f |%> 讲师及控制员 类讲师控制器它没有返回错误,但没有提交讲师id。@

我有一个小Rails站点,有2个控制器、讲师和请求。站点管理员只能访问讲师来管理和管理他们(所有方法都通过设备验证)。第二个控制器讲师是访问者访问站点的方式,以查看列出的讲师并为他们选择的讲师创建请求。我在创建新请求时遇到问题,这些请求应保存姓名、电话、电子邮件以及请求显示页面中选择的讲师id。我希望我的描述会很清楚

谢谢

请求控制器
class RequestsController
请求显示

地址:
车型:

{:action=>“create”})do | f |%>


讲师及控制员
类讲师控制器
讲师模型
课堂讲师(obj){obj.address.present?和obj.address_changed?}
结束
请求模型
类请求
我认为错误来自show view中的
简单表单,因为
@讲师
为零

这个变量来自:

@instructor = Instructor.find(params[:id])

您应该进行测试,确保存在一个具有随参数一起发送的id的讲师。

比转储代码更有用的方法是显示错误信息。请注意,您的代码中没有任何地方可以调用
。model_name
您可以在此处发布错误吗?没有代码可以在请求和讲师之间建立关联。您还将
@讲师
传递到
简单表单中,您似乎打算创建
请求
而不是
讲师
。请更清楚地说明错误消息和触发它的操作。@Pramod现在我有这个{:action=>“create”})do | f |%>它没有返回错误,但没有提交讲师id。@Owen实际上是对的。我正在用{:action=>“create”})do | f |%>传递@讲师,但它仍然没有提交它。我现在做错了什么?
ActiveRecord#如果没有匹配的记录,find
will
raise
<header><h1 class="display-4"><%= @instructor.name %></h1></header>

      <h3>Address: <%= @instructor.address %></h3>
      <h3>Car Model: <%= @instructor.car %></h3>
      <hr>
      <%= simple_form_for(@instructor, :url =>{ :action => "create" }) do |f| %>
        <%= f.input :name, label: "Your name" %>
        <%= f.input :email %>
        <%= f.input :phone, label: "Phone number" %>
        <%= f.input :message, as: :text %>
        <br>
        <%= f.button :submit, class: "btn btn-danger" %>
      <% end %>
      <br>
      <br>
class InstructorsController < ApplicationController
      # Admin is required to login to access any action on this controller
      before_action :authenticate_admin! # except: [:action, :action] to unlock any action

      def index
        @instructors = Instructor.order('created_at DESC')
      end

      def show
        find_instructor
      end

      def new
        @instructor = Instructor.new
      end

      def update
        find_instructor
        if @instructor.update(instructor_params)
          redirect_to @instructor
          flash[:notice] = "Instructor changes has been saved."
        else
          render 'edit'
        end
      end

      def create
        @instructor = Instructor.new(instructor_params)
        if @instructor.save
          flash[:notice] = "Instructor has been saved!"
          redirect_to instructors_path
        else
          render 'new'
          flash_error('New instructor hasn\'t been saved.')
        end
      end

      def edit
        find_instructor
      end

      def destroy
        find_instructor
         if @instructor.destroy
           redirect_to root_path
           flash[:notice] = "The instructor has been deleted."
         else
           flash_error('Instructor hasn\'t been deleted.')
         end
      end

        private

        def flash_error(message) # Takes the of the error message as an argument
          flash[:alert] = "Something went wrong!, #{message}
                           Please make sure you submitting valid data and try again"
        end

        def find_instructor
          @instructor = Instructor.find(params[:id])
        end

        def instructor_params
           params.require(:instructor).permit(:name, :car, :address, :manual, :auto)
        end
    end
           flash_error('Instructor hasn\'t been deleted.')
         end
      end

        private

        def flash_error(message) # Takes the of the error message as an argument
          flash[:alert] = "Something went wrong!, #{message}
                           Please make sure you submitting valid data and try again"
        end

        def find_instructor
          @instructor = Instructor.find(params[:id])
        end

        def instructor_params
           params.require(:instructor).permit(:name, :car, :address, :manual, :auto)
        end
    end
class Instructor < ApplicationRecord
  has_many :requests
  geocoded_by :address
  after_validation :geocode, if: ->(obj){ obj.address.present? and obj.address_changed? }
end
class Request < ApplicationRecord
  belongs_to :instructor
end
@instructor = Instructor.find(params[:id])