Rails 4.2中带有json字段的输入表单出错

时间:2017-06-18 06:37:44

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

在我的带有postgres的Rails 4.2应用程序中,字段ui_layout在db表中转换为json(psql支持json数据类型)。 ui_layout曾经是text字段。在db表中将ui_layout转换为json后,输入表单new的呈现会返回如下错误:

ActionView::Template::Error (No input found for json):
    48:                         <%= f.input :footer, :label => ('Footer') %>
    49:                         <%= f.input :time_periods, :label => ('Time Periods') %>
    50:                         <%= f.input :max_time_period, :label => ('max Time Period') %>
    51:                         <%= f.input :ui_layout, :label => ('UI Layout (json)'), :input_html => {:rows => 2} %>
    52:
    53:
    54:                         <div class="btn-toolbar" >
  simple_form (3.1.1) lib/simple_form/form_builder.rb:574:in `find_mapping'
  simple_form (3.1.1) lib/simple_form/form_builder.rb:503:in `find_input'
  simple_form (3.1.1) lib/simple_form/form_builder.rb:113:in `input'
  /home/ubuntu/.rvm/gems/ruby-2.1.2/bundler/gems/onboard_data_uploadx-f2c20c94f7d6/app/views/onboard_data_uploadx/dashboard_details/_form_new.html.erb:51:in `block in __home_ubuntu__rvm_gems_ruby_______bundler_gems_onboard_data_uploadx_f_c__c__f_d__app_views_onboard_data_uploadx_dashboard_details__form_new_html_erb__2939072899287253628_79696400'
  actionview (4.2.0) lib/action_view/helpers/capture_helper.rb:38:in `block in capture'
  actionview (4.2.0) lib/action_view/helpers/capture_helper.rb:200:in `with_output_buffer'

new输入表单上,ui_layout被视为text字段。进入json字段的正确方法是什么?我是否需要输入文本并将其转换为控制器中的json

1 个答案:

答案 0 :(得分:1)

  

ActionView :: Template :: Error(找不到json的输入)

原则上,simple_form 不支持 JSON数据类型。但是,您可以覆盖应该解决问题的输入类型

<%= f.input :ui_layout, as: :text, :label => ('UI Layout (json)'), :input_html => {:rows => 2} %>