繁体   English   中英

将参数传递给控制器​​不起作用

[英]Passing params to controller not working

我对RoR不太熟悉,所以我正在尝试通过做一些项目来学习。 我目前正在研究的一款应用程序是面向客户的健身教练的应用程序。 当我尝试为客户创建新的评估时,似乎没有将client_id参数传递给Assessments_controller。 这是一行:

<%= link_to 'New assessment', new_assessment_path(client_id: @client.id), class: "btn btn-xs btn-success" %> 

错误:找不到具有'id'=的客户端

但是,在新的评估视图上的调试区域中,我看到以下内容:

--- !ruby/hash-with-ivars:ActionController::Parameters
elements:
  client_id: '1'
  controller: assessments
  action: new
ivars:
  :@permitted: false

当我单击“创建”时,发生错误

评估控制器:

 def create
   @assessment = Assessment.new(assessment_params)
   @assessment.client = Client.find(params[:client_id])
  respond_to do |format|
  if @assessment.save
    format.html { redirect_to @assessment, notice: 'Assessment was successfully created.' }
    format.json { render :show, status: :created, location: @assessment }
  else
    format.html { render :new }
    format.json { render json: @assessment.errors, status: :unprocessable_entity }
  end
end

结束

我很确定您是将new_assessment_path(client_id: @client.id)分配给新页面,并且在提交表单时客户端ID不会传递来创建操作。 有许多不同的解决方案。

1.解决方案

<%= link_to 'New assessment', new_assessment_path(client_id: @client.id), class: "btn btn-xs btn-success" %>

#assestment _form.html.erb file
<%= f.hidden_field_tag 'client_id', @client_id %>

#assessments_controller:
def new
   @assessment = Assessment.new
   @client_id = params[:client_id]
end

def create
   @assessment = Assessment.new(assessment_params)
  respond_to do |format|
  if @assessment.save
    format.html { redirect_to @assessment, notice: 'Assessment was successfully created.' }
    format.json { render :show, status: :created, location: @assessment }
  else
    format.html { render :new }
    format.json { render json: @assessment.errors, status: :unprocessable_entity }
  end
end

#add :client_id
def assessment_params
   params.require(:registration).permit(..., :client_id)
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM