我在Rails应用程序中使用Simple Form Gem创建了一个包含各种输入字段的表单。其中一个问题是复选框输入字段,用户可以选择多个值,其中包含与饮食和生活方式相关的问题(你喝咖啡,吃白面包吗?等等)。在数据库上,相应的列(名为' tick')是一个整数输入字段。
我希望用户根据需要选择多个复选框,并在“显示”中显示这些选项。用户提交表单后查看。因此,show视图可能会在问题列表旁边显示已选中和未选中框的列表,或者仅显示已选中的复选框。两者都适合。我有一种感觉,解决方案可能是以某种方式创建一系列答案并在视图中显示结果,但到目前为止我还没有能够做到这一点。
用户提交表单后,会将其重定向到' show'查看相应的html输出只是" Tick"没有给出实际答案。请参阅下面的html输出:
.
.
.
<p>
<strong>Tick:</strong>
</p>
.
.
.
表格部分:_form.html.erb
<%= simple_form_for(@formulario) do |f| %>
<%= f.error_notification %>
<%= f.error_notification message: f.object.errors[:base].to_sentence if
f.object.errors[:base].present? %>
.
.
.
.
<%= f.input :tick,
label:'Pon un tic en las Casillas si son aplicables en tu caso',
collection: [
['padecido desorden alimentaria?', '1'],
['comes mucho lacteo o trigo?', '2'],
['te gusta comer/preparer comida?', '3'],
['compras comida ecológica?', '4'],
['añades sal a la comida?', '5'],
['tomas café o té descafeinado?', '6'],
['usas margarinas?', '7'],
['cocinas con aceites vegetales?', '8'],
['bebes agua filtrada?', '9'],
['has cambiado tu dieta ultimamente?', '10'],
['tomas té o café?', '11'],
['comes pan blanco?', '12'],
['comes mucho comida frita?', '13'],
['compras mucha comida para llevar?', '14'],
['comes mucha fruta y verdua fresca? ', '15'],
['añades muchas salsas a la comida?', '16'],
['comes fuera a menudo?', '17'],
['cocinas para mas personas?', '18'],
['tienes apetito grande?', '19'],
['tu dieta es repetitiva?', '20'],
['comes pasta y arroz?', '21'],
['comes comida preparada?', '22'],
['usas el microondas?', '23'],
['eliges comida bajo en grasa?', '24'],
],
as: :check_boxes %>
.
.
.
<% end %>
显示视图:show.html.erb
<p id="notice"><%= notice %></p>
.
.
.
<p>
<strong>Tick:</strong>
<%= @formulario.tick %>
</p>
.
.
.
<%= link_to 'Edit', edit_formulario_path(@formulario) %> |
<%= link_to 'Back', formularios_path %>
创建数组是前进的方向还是有更快的解决方案?
答案 0 :(得分:1)
您可以serialize
您的tick
属性在您的数据库中存储数组。
如果tick
属性是整数,请运行迁移将其更改为字符串:
def change
change_column :formularios, :tick, :string
end
序列化模型中的属性:
class Formulario < ApplicationRecord
serialize :tick, Array
end
允许tick
强参数作为数组:
def formulario_params
params.require(:formulario).permit(tick: [])
end
现在您的模型可以存储多个&#34;数字&#34;在tick
中,只需更改显示视图中的显示(@formulario.tick
现在返回类似&#34; [&#39; 1&#39;,&#39; 2&#39;,&#39 ; 3&#39;]&#34)