Ruby Rails 参数未保存在数据库中
Ruby on Rails parameter not being saved on database
我在控制器 customer_tasks
的视图中有一个表单,它使用带有来自模型 customer
的列名称的下拉菜单。
在表单中,该下拉菜单使用以下内容调用:
<div class="field">
<%= f.label :search_column1 %><br>
<%= select_tag :search_column1, options_for_select(Customer.translated_searchable_columns, params[:search_column1]), :include_blank => true %>
</div>
在我的模型中 customer
下拉菜单是通过以下方式生成的:
def self.searchable_columns
wanted_columns = ['id', 'aa_code', 'name' ]
self.column_names.select{ |column| wanted_columns.include?(column) }
end
def self.translated_searchable_columns
columns = self.searchable_columns
result = columns.map{ |column [Customer.human_attribute_name(column.to_sym), column] }
result
end
在 customer_tasks
控制器中,我将 :search_column1
包含在允许的参数中,例如:
def customer_task_params
params.require(:customer_task).permit(:task_name, :period, :client_type, :search_column1, search_column1: [])
end
但是 development.log
的输出是:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"H4waTsM4D1+EZX+deFozJut6FRS36sVQe7d7a1oRK2w=", "customer_task"=>{"task_name"=>"blah", "period"=>"", "client_type"=>"Γ"}, "search_column1"=>"aa_code", "commit"=>"Ενημέρωση Customer task", "locale"=>"el", "id"=>"4"}
下拉菜单正在运行并发送所选选项。
为什么尽管参数在控制器中是允许的,但它没有saved/written到数据库?
为什么"search_column1"=>"aa_code"
出现在数据库参数外?
我在这里缺少什么?
您正在使用 select_tag
that's why "search_column1"=>"aa_code"
appears outside the parameters to the database., if you use select
它将进入 customer_task
哈希。
将您的 select_tag
更改为:
<%= f.select :search_column1, options_for_select(Customer.translated_searchable_columns, params[:search_column1]), :include_blank => true %>
我在控制器 customer_tasks
的视图中有一个表单,它使用带有来自模型 customer
的列名称的下拉菜单。
在表单中,该下拉菜单使用以下内容调用:
<div class="field">
<%= f.label :search_column1 %><br>
<%= select_tag :search_column1, options_for_select(Customer.translated_searchable_columns, params[:search_column1]), :include_blank => true %>
</div>
在我的模型中 customer
下拉菜单是通过以下方式生成的:
def self.searchable_columns
wanted_columns = ['id', 'aa_code', 'name' ]
self.column_names.select{ |column| wanted_columns.include?(column) }
end
def self.translated_searchable_columns
columns = self.searchable_columns
result = columns.map{ |column [Customer.human_attribute_name(column.to_sym), column] }
result
end
在 customer_tasks
控制器中,我将 :search_column1
包含在允许的参数中,例如:
def customer_task_params
params.require(:customer_task).permit(:task_name, :period, :client_type, :search_column1, search_column1: [])
end
但是 development.log
的输出是:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"H4waTsM4D1+EZX+deFozJut6FRS36sVQe7d7a1oRK2w=", "customer_task"=>{"task_name"=>"blah", "period"=>"", "client_type"=>"Γ"}, "search_column1"=>"aa_code", "commit"=>"Ενημέρωση Customer task", "locale"=>"el", "id"=>"4"}
下拉菜单正在运行并发送所选选项。 为什么尽管参数在控制器中是允许的,但它没有saved/written到数据库?
为什么"search_column1"=>"aa_code"
出现在数据库参数外?
我在这里缺少什么?
您正在使用 select_tag
that's why "search_column1"=>"aa_code"
appears outside the parameters to the database., if you use select
它将进入 customer_task
哈希。
将您的 select_tag
更改为:
<%= f.select :search_column1, options_for_select(Customer.translated_searchable_columns, params[:search_column1]), :include_blank => true %>