我有一个搜索控制器,我从params获得客户端。
def show
@client = Client.find(params[:id])
@training_session = @client.training_sessions.new
end
在我尝试传递client_id值的表单中:
<%= form_for @training_session do |f| %>
<% binding.pry %>
<%= f.hidden_field :client_id, value: @client.id %>
但是在training_sessions_controller中,params [:client_id]是nil。
private
def find_client
binding.pry
@client = Client.find(params[:client_id])
end
为什么client_id参数没有从表单传递?
答案 0 :(得分:2)
首先看一下视图生成的HTML表单。 但是,在您的控制器中,您应该将您的客户端ID设为:
training_session_params = params.require(:training_sessions).permit(:client_id)
client_id = training_session_params[:client_id]
因为表单是为TrainingSession模型创建的,而不是为客户端模型创建的。