[英]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.