Ruby on rails 在Rails中分配ID

Ruby on rails 在Rails中分配ID,ruby-on-rails,routes,Ruby On Rails,Routes,我正在开发一个测试应用程序,它有两个模型——客户和工作。一个客户有很多工作,一个工作属于一个客户 在“客户视图”页面上,有一个链接_,用于创建新工单,如下所示: <%= link_to "New Job", new_job_path %> resources :job_assignments, :only => [:create] 我已经在jobs表上创建了customer_id作为外键,并且可以使用Rails控制台手动将作业分配给customer id 我不知道如何从

我正在开发一个测试应用程序,它有两个模型——客户和工作。一个客户有很多工作,一个工作属于一个客户

在“客户视图”页面上,有一个链接_,用于创建新工单,如下所示:

<%= link_to "New Job", new_job_path %>
  resources :job_assignments, :only => [:create]
我已经在jobs表上创建了customer_id作为外键,并且可以使用Rails控制台手动将作业分配给customer id

我不知道如何从这里开始来实现我的目标(当从客户视图页面单击新作业链接时,让客户id自动分配给作业id)

关于我是否在正确的轨道上或者我错过了什么,有什么想法或想法吗

增编:

_form.html.erb:

<%= form_for(@job) do |f| %>
 <% if @job.errors.any? %>
   <div id="error_explanation">
     <h2><%= pluralize(@job.errors.count, "error") %> prohibited this job from being saved:</h2>

     <ul>
     <% @job.errors.full_messages.each do |msg| %>
       <li><%= msg %></li>
     <% end %>
     </ul>
   </div>
 <% end %>

 <div class="field">
   <%= f.label :installation %><br>
   <%= f.text_field :installation %>
 </div>
 <div class="field">
   <%= f.label :install_date %><br>
   <%= f.text_field :install_date %>
 </div>
 <div class="field">
   <%= f.label :delivery %><br>
   <%= f.text_field :delivery %>
 </div>
 <div class="field">
   <%= f.label :box_count %><br>
   <%= f.number_field :box_count %>
 </div>
 <div class="field">
   <%= f.label :room_type %><br>
   <%= f.text_field :room_type %>
 </div>
 <div class="field">
  <%= f.label :material %><br>
  <%= f.text_field :material %>
 </div>
 <div class="field">
   <%= f.label :exterior_colour %><br>
   <%= f.text_field :exterior_colour %>
 </div>
 <div class="actions">
  <%= f.submit %>
 </div>
<% end %>

禁止保存此作业:







增编2:

控制器的作业:

class JobsController < ApplicationController
  before_action :set_job, only: [:show, :edit, :update, :destroy]

  def index
    @jobs = Job.all
  end

  def show
  end


  def new
    @job = Job.new
  end


  def edit
  end

  def create
    @job = Job.new(job_params)

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

def update
  respond_to do |format|
  if @job.update(job_params)
    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.destroy
  respond_to do |format|
    format.html { redirect_to jobs_url }
    format.json { head :no_content }
end
end

private
# Use callbacks to share common setup or constraints between actions.
def set_job
  @job = Job.find(params[:id])
end

# Never trust parameters from the scary internet, only allow the white list through.
def job_params
   params.require(:job).permit(:job_number, :installation, :install_date, :delivery, :box_count, :room_type, :material, :exterior_colour)
  end
end
类作业控制器
至少在填充
客户id
字段时,您不需要
作业分配控制器

您应该通过
cusmoters
添加嵌套的资源路由,其中包含
作业
。在routes.rb中

resources :customers do
  resources :jobs
end
将链接修改为(通过
rake routes
交叉检查路径名,并且
customer\u id
是此链接将为其创建作业的客户的
id
):

而不是

@job = Job.new
它将预先填充您的
客户id


阅读

您是否希望自动分配
客户id的值
以存储在
作业
中?发布您的
作业
控制器
新建.html.erb
表单.html.erb
您需要向我们显示添加新作业的查看代码页面(不是客户)@RAJ我的错误,以上表格已相应更改。谢谢。。不管怎样,看看我的答案,我想这可以解决你的问题。我得到了一个未定义的局部变量,或者当前用户的方法错误。请记住-用户登录并在应用程序中填充客户和作业。因此,客户从不登录。我只想在客户页面上有一个链接来创建一个新作业,并将该客户id拉入作业。非常接近-现在当我单击新作业链接时,我得到一个错误,该错误状态为:找不到id=customer\u id的客户。因此,现在它正在查找id,但没有将其拉下来。抱歉,我要提到的是,您需要在
link\u to
中动态添加要为其创建作业的客户id,以代替
customer\u id
,我不知道如何操作-您有我可以阅读的资源吗?
<%= link_to "New Job", new_customer_job_path(customer_id) %> 
customer = Customer.find(params[:customer_id])
@job = customer.jobs.build
@job = Job.new