编辑表单复选框、收音机和 trix 编辑器未在 ActiveAdmin 中预填充
Edit form checkbox, radio and trix editor not getting pre-populated in ActiveAdmin
我有一个表单,其中包含复选框、trix 编辑器、单选按钮和文本字段。当我在管理界面中编辑记录时,表格会显示所有文本字段。我看不到 trix 编辑器、复选框和单选按钮。
我知道 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
表格如下所示
它没有显示应该有 trix 编辑器的字段(描述,如何应用)。对于单选(工作类型)和复选框(类别)字段,它显示简单的是和否..这些字段的实际值是这些
已编辑
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" = ORDER BY "admin_users"."id" ASC LIMIT 1 [["id", 1]]
JobPosting Load (0.3ms) SELECT "job_postings".* FROM "job_postings" WHERE "job_postings"."id" = LIMIT 1 [["id", 3]]
CACHE (0.0ms) SELECT "job_postings".* FROM "job_postings" WHERE "job_postings"."id" = 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)
这是我的 views/job_postings/_form.html.erb
如果您检查类别字段它不是来自任何 table 我有一个数组并迭代它。
<%= 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 %>
看来 trix_editor
与 activeadmin 不兼容,所以我不确定您是否能够使用它。对于其他人,您需要包含一个集合才能显示,否则它似乎默认为 yes/no 个框。所以像这样:
f.input :categories, as: :check_boxes, collection: f.object.categories
这应该让活动管理员知道您想要使用类别可用的选项来填充复选框。
已编辑:
试试这个:
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
已解决
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
我有一个表单,其中包含复选框、trix 编辑器、单选按钮和文本字段。当我在管理界面中编辑记录时,表格会显示所有文本字段。我看不到 trix 编辑器、复选框和单选按钮。
我知道 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
表格如下所示
它没有显示应该有 trix 编辑器的字段(描述,如何应用)。对于单选(工作类型)和复选框(类别)字段,它显示简单的是和否..这些字段的实际值是这些
已编辑
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" = ORDER BY "admin_users"."id" ASC LIMIT 1 [["id", 1]]
JobPosting Load (0.3ms) SELECT "job_postings".* FROM "job_postings" WHERE "job_postings"."id" = LIMIT 1 [["id", 3]]
CACHE (0.0ms) SELECT "job_postings".* FROM "job_postings" WHERE "job_postings"."id" = 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)
这是我的 views/job_postings/_form.html.erb
如果您检查类别字段它不是来自任何 table 我有一个数组并迭代它。
<%= 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 %>
看来 trix_editor
与 activeadmin 不兼容,所以我不确定您是否能够使用它。对于其他人,您需要包含一个集合才能显示,否则它似乎默认为 yes/no 个框。所以像这样:
f.input :categories, as: :check_boxes, collection: f.object.categories
这应该让活动管理员知道您想要使用类别可用的选项来填充复选框。
已编辑:
试试这个:
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
已解决
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