2017-02-10 41 views
1

У меня есть форма, которая имеет флажки, редактор trix, переключатель и текстовые поля. Когда я редактирую запись в интерфейсе администратора, форма отображается со всеми текстовыми полями. Невозможно увидеть редактор трикса, флажки и переключатели.Редактировать форму checkbox, radio и trix editor, не получая предварительно заполненных в ActiveAdmin

Я знаю as: :radio и as: :check_boxes и as: :trix_editor должны работать, но они не получают предварительно заполнены уже сохраненных значений

Вот мой файл jobposting.rb.

Любая помощь будет действительно оценена.

form do |f| 
    f.inputs "New Job Posting" do 
     f.input :title 
     f.input :description, as: :trix_editor 
     f.input :how_to_apply, as: :trix_editor 
     f.input :job_type, as: :radio 
     f.input :city 
     f.input :user_id 
     f.input :categories, as: :check_boxes 

     f.input :publish 


    end 
    f.actions 
    end 

и форма появляется как это

enter image description here

Его не показаны поля (описание, как применять), которые должны иметь редактор Трикс. Для радио (Работа Тип) и флажок (Категории) поля его показ просто да и no..where как фактические значения для этих полей эти enter image description here

EDITED

Started GET "/admin/job_postings/3/edit" for ::1 at 2017-02-11 12:41:22 +0530 
Processing by Admin::JobPostingsController#edit as HTML 
    Parameters: {"id"=>"3"} 
    AdminUser Load (0.4ms) SELECT "admin_users".* FROM "admin_users" WHERE "admin_users"."id" = $1 ORDER BY "admin_users"."id" ASC LIMIT 1 [["id", 1]] 
    JobPosting Load (0.3ms) SELECT "job_postings".* FROM "job_postings" WHERE "job_postings"."id" = $1 LIMIT 1 [["id", 3]] 
    CACHE (0.0ms) SELECT "job_postings".* FROM "job_postings" WHERE "job_postings"."id" = $1 LIMIT 1 [["id", "3"]] 
    Rendered /Users/KrishnaTeja/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/bundler/gems/activeadmin-2bb5021f81c2/app/views/active_admin/resource/edit.html.arb (270.1ms) 
Completed 500 Internal Server Error in 367ms (ActiveRecord: 7.4ms) 

ActionView::Template::Error (undefined method `categories' for #<Class:0x007ffdd084e420>): 
    1: insert_tag renderer_for(:edit) 
    app/admin/job_postings.rb:26:in `block (3 levels) in <top (required)>' 
    app/admin/job_postings.rb:18:in `block (2 levels) in <top (required)>' 


    Rendered /Users/KrishnaTeja/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.2.7.1/lib/action_dispatch/middleware/templates/rescues/_source.erb (16.6ms) 
    Rendered /Users/KrishnaTeja/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.2.7.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (7.9ms) 
    Rendered /Users/KrishnaTeja/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.2.7.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.8ms) 
    Rendered /Users/KrishnaTeja/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/actionpack-4.2.7.1/lib/action_dispatch/middleware/templates/rescues/template_error.html.erb within rescues/layout (115.2ms) 

enter image description hereenter image description here

Это мой views/job_postings/_form.html.erb если вы проверяете Категория s его не исходит из любой таблицы am, имеющей массив и итерации через нее.

<%= form_for @job_posting do |f| %> 
<% if @job_posting.errors.any? %> 
     <div id="errors"> 
      <h2><%= pluralize(@job_posting.errors.count, "error") %> prevented this post from saving:</h2> 
      <ul> 
       <% @job_posting.errors.full_messages.each do |msg| %> 
        <li><%= msg %></li> 
       <% end %> 
      </ul> 
     </div> 
    <% end %> 

<p> 
    <%= f.label :title %> 
    <%= f.text_field :title %> 
</p> 

<p> 
    <%= f.label :description %> 

    <%= f.trix_editor :description %> 

</p> 
<p> 
    <%= f.label :how_to_apply %> 
    <%= f.trix_editor :how_to_apply %> 
</p> 
<p> 
    <%= f.label :categories %> 

    <% [ 'Front End', 'Back End', 'Others'].each do |category| %> 
     <%= label_tag "job_posting_categories_#{category}", category %> 

     <%= check_box_tag "job_posting[categories][]", category, checked(category), id: "job_posting_categories_#{category}" %> 


    <% end %> 

</p> 
<p> 
    <%= f.label :job_type %> 
    <% [ 'FullTime', 'Contract', 'PartTime', 'Freelance', 'Intern'].each do |job_type| %> 
     <%= f.radio_button 'job_type', job_type %> 
      <%= job_type.humanize %> 
    <% end %> 

</p> 
<p> 
    <%= f.label :city %> 
    <%= f.text_field :city %> 
</p> 
    <%= f.submit "Post Job" %> 


<% end %> 
+0

Не могли бы вы опубликовать код с 'check_bo xes' и 'radio' и т. д., потому что, как вы его опубликовали прямо сейчас, то, что делается, работает отлично. Нам нужно увидеть код так, как вы этого хотите, и полученный снимок экрана – LBarry

+0

@LBarry Я добавил дополнительную информацию. Извините за то, что вы не точны. –

+0

@ KrishnaTejaKarnam: мы предпочитаем ответы, чтобы перейти в поле ответа здесь.Скопируете ли вы его на самостоятельный ответ, а затем откатите свой вопрос до его последнего состояния до добавления в решение? Спасибо. – halfer

ответ

1

решаемые

ActiveAdmin.register JobPosting do 

# See permitted parameters documentation: 
# https://github.com/activeadmin/activeadmin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters 
# 
permit_params :title, :description,:how_to_apply, :job_type ,:city,:user_id,{ categories: []}, :publish 
# 
# or 
# 
# permit_params do 
# permitted = [:permitted, :attributes] 
# permitted << :other if params[:action] == 'create' && current_user.admin? 
# permitted 
# end 


form do |f| 
    inputs "New Job Posting" do 

     input :title 
     input :description 
     input :how_to_apply 
     input :job_type, as: :radio, collection: [ 'FullTime', 'Contract', 'PartTime', 'Freelance', 'Intern'] 
     input :city 
     input :user, member_label: :email 
     input :categories, as: :check_boxes, collection: ['Front End','Back End','Others'].map { |e| [e, e,{checked: f.object.categories.include?(e)}] } 

     input :publish 


    end 
    actions 
    end 


end 
0

Казалось бы, что trix_editor не совместим с activeadmin, так что я не уверен, что если вы будете в состоянии использовать это вообще. Для остальных вам нужно включить коллекцию для ее отображения, иначе она по умолчанию будет иметь поля yes/no. Так что-то вроде этого:

f.input :categories, as: :check_boxes, collection: f.object.categories 

Это должно позволить активному администратору знать, что вы хотите использовать доступные варианты категорий для заполнения галочки.

EDITED:

Попробуйте вместо этого:

form do |f| 
    inputs "New Job Posting" do 
     input :title 
     input :description 
     input :how_to_apply 
     input :job_type, as: :radio 
     input :city 
     input :user_id 
     input :categories, as: :check_boxes, collection: f.object.categories 
     input :publish 
    end 
    actions 
    end 

или даже:

form do |f| 
    inputs "New Job Posting" do 
     input :title 
     input :description 
     input :how_to_apply 
     input :job_type, as: :radio 
     input :city 
     input :user_id 
     input :categories, as: :check_boxes, collection: JobPosting.categories 
     input :publish 
    end 
    actions 
    end 
+0

Я добавил эту 'f.input: categories, as:: check_boxes, collection: f.object.categories', и я получаю эту ошибку' undefined method "map" для "[\" Front End \ ", \" Back End \ "]": String' выглядит как нечто, связанное с типом. Я не знаю, пропало ли его глупое. –

+0

Вам, вероятно, придется удалить 'f' из коллекции, поэтому вместо этого используйте' collection: object.categories' – LBarry

+0

, даже тогда я получаю ту же ошибку 'undefined method" map "для" [\ "Front End \", \ «Back End \"] ": String' –