来自hidden_​​field的Rails参数不会传递给控制器​​

问题描述:

我有一个搜索控制器,我可以从params中获取客户端。来自hidden_​​field的Rails参数不会传递给控制器​​

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]为零。

private 
def find_client 
    binding.pry 
    @client = Client.find(params[:client_id]) 
end 

为什么client_id参数不能从表单传递?

首先看看由视图生成的HTML表单。 然而,在你的控制器,你应该让你的客户ID为:

training_session_params = params.require(:training_sessions).permit(:client_id) 

client_id = training_session_params[:client_id] 

因为形式的TrainingSession模型而不是客户端之一创建。