来自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模型而不是客户端之一创建。