Ruby on rails Rails 3.2-尝试编辑新数据库条目时收到一个奇怪的错误

Ruby on rails Rails 3.2-尝试编辑新数据库条目时收到一个奇怪的错误,ruby-on-rails,ruby-on-rails-3,relationship,Ruby On Rails,Ruby On Rails 3,Relationship,我有一个叫做Job的对象,它属于另一个对象 在多个关系中调用客户端 这是我的工作模式 class Job < ActiveRecord::Base belongs_to :client end 我想这可能是因为我的控制器在某种程度上是错误的,但这是我的第一个应用程序,所以我不太确定去哪里看 这是我的控制器 类JobsController

我有一个叫做Job的对象,它属于另一个对象 在多个关系中调用客户端

这是我的工作模式

class Job < ActiveRecord::Base
  belongs_to :client
end
我想这可能是因为我的控制器在某种程度上是错误的,但这是我的第一个应用程序,所以我不太确定去哪里看

这是我的控制器

类JobsController
    def index
      @job = Job.all

      respond_to do |format|
        format.html # index.html.erb
        format.json { render json: @job }
      end
    end

    def show
      @job = Job.find(params[:id])

      respond_to do |format|
        format.html # show.html.erb
        format.json { render json: @job }
      end
    end

    def new
      @job = Job.new(params[:id])

      respond_to do |format|
        format.html # new.html.erb
        format.json { render json: @job }
      end
    end

    def edit
      @job = Job.find(params[:id])
    end

    def create
      @job = Job.new(params[:jobs])

      respond_to do |format|
        if @job.save
          format.html { redirect_to @job, notice: 'job was successfully created.' }
          format.json { render json: @job, status: :created, location: @job }
        else
          format.html { render action: "new" }
          format.json { render json: @job.errors, status: :unprocessable_entity }
        end
      end
    end

    def update
      @job = Job.find(params[:id])

      respond_to do |format|
        if @job.update_attributes(params[:job])
          format.html { redirect_to @job, notice: 'job was successfully updated.' }
          format.json { head :no_content }
        else
          format.html { render action: "edit" }
          format.json { render json: @job.errors, status: :unprocessable_entity }
        end
      end
    end

    def destroy
      @job = Job.find(params[:id])
      @job.destroy

      respond_to do |format|
        format.html { redirect_to :jobs }
        format.json { head :no_content }
      end
    end
  end

任何指向正确方向的指针或节点都将受到欢迎。

问题在于Activerecord需要一个客户端对象的实例,并且它的方法Client=因为属于关联 从请求绑定AR对象时,应该使用client_id参数而不是client

你可以读到

如果客户端计数较短,则可以使用select,并将客户端id用作名称 范例

所以你可以这样做

select("job", "client_id", Client.all.collect {|c| [ c.name, c.id ] }, {:include_blank => 'None'})
而不是

 f.text_field :client, :class => 'text_field' 

问题是因为Activerecord需要一个客户端对象的实例,并且它的方法Client=因为属于关联 从请求绑定AR对象时,应该使用client_id参数而不是client

你可以读到

如果客户端计数较短,则可以使用select,并将客户端id用作名称 范例

所以你可以这样做

select("job", "client_id", Client.all.collect {|c| [ c.name, c.id ] }, {:include_blank => 'None'})
而不是

 f.text_field :client, :class => 'text_field' 

向我们显示用于编辑您的工作的表单。表单很长,可以在此处发布,但它在此处。。向我们显示用于编辑您的工作的表单。表单很长,可以在此处发布,但它在此处。。非常感谢。我需要在哪里指定呢?我按照您在我的视图中所说的那样输入了该文本,但我看到的只是该文本,现在是一个输入框。输入框包含所有现有客户机,因此创建作业时,必须从中选择所需的客户机谢谢。。我需要在哪里指定它?我按照您在我的视图中所说的那样输入了该文本,但我看到的只是该文本,现在是一个输入框。输入框包含所有现有客户机,因此创建作业时,必须从中选择所需的客户机