In a form in active admin, the fields expand horizontally across the page according to the size of the window. If it's a big monitor, there is a lot of "unused" space to the right.
How can I add a "column" (NOT a side bar) to the right of the page so that I will end up with a 50% width section of the form on the left and a 50% width section of the form on the right?
I need this because I have lots of fields.
This is what my form partially looks like right now...
form do |f|
f.inputs "Shipment Details" do
f.input :file_number
f.input :customer, :label_method => :company_name
f.input :shipper, :label_method => :company_name
f.input :broker, :label_method => :company_name
end
f.inputs "Places" do
f.input :place_of_origin, :as => :select, :collection => Place.find(:all, :order => "city", :select => "city").map(&:city)
f.input :place_of_loading, :as => :select, :collection => Place.find(:all, :order => "city", :select => "city").map(&:city)
f.input :place_of_delivery, :as => :select, :collection => Place.find(:all, :order => "city", :select => "city").map(&:city)
f.input :via, :as => :select, :collection => Place.find(:all, :order => "city", :select => "city").map(&:city)
end
f.inputs "Carrier" do
f.input :carrier, :label_method => :company_name
f.input :mode, :as => :select,
:collection => ["Air", "Air Collect", "Air Prepaid", "FCL", "FTL", "LCL", "LTL", "TBA"]
f.input :mbl, :label => "MBL"
f.input :hbl, :label => "HQL"
f.input :vessel
f.input :container
end
f.buttons
end
It's pretty simple, you can give each section of your inputs a CSS class, then you would modify active_admin.css.scss (or just .css) so it would float your forms to the correct place, as well as give them a correct width, etc.
Related
I am new to ruby on rails and active admin, I need to create check boxes for registration fees. while I checked, the value from checkbox is not saved to the database. can anyone help me ??
form do |f|
f.inputs do
f.input :name, label: "Student Name"
f.input :dob,:label => "Date of Birth"
f.input :age,:label => "Age"
f.input :gender, as: :radio, :label => "Gender", :collection => [ "Male", "Female"]
f.input :reg_fee, :as => :check_boxes, :collection => RegChargeSetup.all.map{|v| ["#{v.reg_fee}"]}
end
f.actions
end
From your code, you are taking array of arrays, instead you should take array of strings,
So, change
f.input :reg_fee, :as => :check_boxes, :collection => RegChargeSetup.all.map{|v| ["#{v.reg_fee}"]}
to,
f.input :reg_fee, :as => :check_boxes, :collection => RegChargeSetup.all.map{|v| "#{v.reg_fee}"}
form do |f|
f.inputs do
f.input :name, label: "Student Name"
f.input :dob,:label => "Date of Birth"
f.input :age,:label => "Age"
f.input :gender, as: :radio, :label => "Gender", :collection => [ "Male", "Female"]
f.input :reg_fee, :as => :check_boxes, :collection => RegChargeSetup.all.map{|v| "#{v.reg_fee}"}
end
f.actions
end
I have created a form in activeadmin as follows. When I select the bkid of the customer, the fields customer name, mobile number, total amount, and amount paid have to be filled automatically in the form.
form :class => 'form_inline' do |f|
f.inputs do
f.input :bkid, :label => 'Booking Id', :as => :select, :collection => Package.all.map{|u| ["#{u.bkid}"]}
f.input :firstName, :as => :string, :label => 'First name', :class => 'same'
f.input :lastName, :as => :string, :label => 'Last name', :class => 'same'
f.input :mobile, :as => :string, :label => 'Mobile no', :class => 'same'
f.input :totalAmount, :as => :string, :label => 'Total Amount', :class => 'same'
f.input :amountPaid, :as => :string, :label => 'Amount Paid', :class => 'same'
f.input :currentPayment, :as => :string, :label => 'Current Payment', :class => 'same'
# f.input :accountcode_id, :label => 'Acc_code', :as => :select, :collection => Accountcode.all.map{|u| ["#{u.accountcode}, #{u.accountname}"]}
br
f.submit :value => 'submit'
end
end
How can I achieve this using ajax?
Here is the code I use to generate a select list of Companies.
<%= f.association :company, :collection => Company.order('name ASC'), :label => "Company: ", :include_blank => false %>
Now the table is pre-populated with a special record "id:1, name:none", I want to exclude this record as a selectable option in the select list that's generated. How can I go about accomplishing this?
Thanks!
Try this
<%= f.association :company, :collection => Company.where("id != 1").order('name ASC'), :label => "Company: ", :include_blank => false %>
Or
In the controller
#companies = Company.where("id != 1").order('name ASC')
In the view
<%= f.association :company, :collection => #companies, :label => "Company: ", :include_blank => false %>
I have a crud with paperclip and multiple images' i implement active_admin and the product update fine, but, i can't not upload or edit the multiple images, the form i have is this:
form :html => { :multipart => true } do |f|
f.inputs "Details" do
f.input :name
f.input :created_at, :label => "Publish Product at"
f.input :category
end
f.inputs "Images" do
f.has_many :assets do |p|
p.input :asset, :as => :file, :input_html => { :multiple => true }, :label => "Image", :hint => p.object.asset.nil? ? p.template.content_tag(:span, "No Image Yet") : p.template.image_tag(p.object.asset.url(:thumb))
p.input :_destroy, :as=>:boolean, :required => false, :label=>'Remove'
end
end
f.inputs "Content" do
f.input :description
end
f.buttons
end
and the...
f.inputs "Images" do
f.has_many :assets do |p|
p.input :asset, :as => :file, :input_html => { :multiple => true }, :label => "Image", :hint => p.object.asset.nil? ? p.template.content_tag(:span, "No Image Yet") : p.template.image_tag(p.object.asset.url(:thumb))
p.input :_destroy, :as=>:boolean, :required => false, :label=>'Remove'
end
end
I want to upload images, but when i create a new asset this have a missing image default and not attach the correct image, i think because the path from the images is not correct to upload. My asset model is:
class Asset < ActiveRecord::Base
belongs_to :product
has_attached_file :asset, :styles => { :large => "340x330", :medium => "140x80>", :thumb => "70x70>" },
:url => "/products/:id/:style/:basename.:extension",
:path => ":rails_root/public/products/:id/:style/:basename.:extension"
end
how i can modify my assets form to work like i want? Thank you!
The Solution
Hi, here is the solution, the key are how work the nested attributes in formtastic...
form :html => { :multipart => true } do |f|
f.inputs "Product information" do
f.input :name
f.input :description
end
f.inputs "Product images" do
f.has_many :assets do |p|
p.input :asset, :as => :file, :label => "Image",:hint => p.object.asset.nil? ? p.template.content_tag(:span, "No Image Yet") : p.template.image_tag(p.object.asset.url(:thumb))
p.input :_destroy, :as=>:boolean, :required => false, :label => 'Remove image'
end
end
f.inputs "Product details" do
f.input :category, :label => "Category", :hint => "Select one category"
f.input :height
f.input :width
f.input :depth
f.input :color, :label => "Color", :hint => "Select one color"
f.input :sku, :label => "SKU"
f.input :price
end
f.buttons
end
I have a Formtastic radio button collection which is populated by a number of types:
<%= f.input :type_id, :validate => true, :as => :radio, :collection => Type.where(:object_type => 'Post') %>
However, I want to conditionally add a class to each choice, since some of the radio buttons need to be disabled depending on a certain condition.
For example, a :member_class => param would be ideal, but I don't believe it exists like :member_label and :member_value.
Does Formtastic have the ability to allow this?
<%= f.input :type_id, :validate => true, :as => :radio,
:collection => Type.where(:object_type => 'Post'),
:input_html => { :class => (:class_name if condition_goes_here) } %>
or
<%= f.input :type_id, :validate => true, :as => :radio,
:collection => Type.where(:object_type => 'Post'),
:input_html => { :disabled => (:disabled if condition_goes_here) } %>