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

时间:2015-03-13 11:15:09

标签: ruby-on-rails ruby-on-rails-4

我有一个搜索控制器,我从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参数没有从表单传递?

1 个答案:

答案 0 :(得分:2)

首先看一下视图生成的HTML表单。 但是,在您的控制器中,您应该将您的客户端ID设为:

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

client_id = training_session_params[:client_id]

因为表单是为TrainingSession模型创建的,而不是为客户端模型创建的。