Active Admin表单下拉菜单不保存数据库中的选定值

时间:2015-04-08 17:58:01

标签: drop-down-menu admin

我是ROR的新手,并使用有效的管理员来生成一个小应用。我属于并且在模型中定义了许多关系。我的应用程序适用于属于不适用的页面。在所属的页面中,我有一个由Active Admin创建的下拉菜单,但是当我从下拉列表中选择值并保存表单时,从下拉列表中选择的值不会被保存。下面是我的模型控制器和活动管理页面代码。请帮我解决这个问题。

ActiveAdmin.register Componentdetail do

models:

class Preference < ActiveRecord::Base

  def permitted_params
    params.permit preference: [:prefname, :prefdisplay, :helptext]
  end
  def preference_params
    params.require(:preference).permit(:prefname, :prefdisplay, :helptext)
  end
  attr_accessible :prefname, :prefdisplay, :helptext
  has_many :prefcomprelation
  #accepts_nested_attributes_for :prefcomprelation, :allow_destroy => true

 def display_name
    return self.prefname
end
def input
  self.id
end
end

class Prefcomprelation < ActiveRecord::Base

  def permitted_params
    params.permit prefcomprelation: [:comment, :preference, :componentdetail]
  end
  def prefcomprelation_params
    params.require(:prefcomprelation).permit(:comment, :preference, :componentdetail)
  end
 # def to_s
 # description
 # end
  attr_accessible :comment, :preference, :componentdetail
  #acts_as_list column: :preference, :scope => :preference
  belongs_to :preference
  #acts_as_list column: :componentdetail, :scope => :componentdetail
  belongs_to :componentdetail
  validates :comment, presence: true
  validates :preference, presence: true
  validates :componentdetail, presence: true
  #controller do
    def new
      @prefcomprelation = Prefcomprelation.new
    end
    def update
    @prefcomprelation = Prefcomprelation.new(precomprelation_params)
    @prefcomprelation.save
    end
    def create
    @prefcomprelation = Prefcomprelation.new(precomprelation_params)
    @prefcomprelation.save
    end
  #end
end

class Message < ActiveRecord::Base

  def permitted_params
    params.permit message: [:message, :componentdetail]
  end
    def message_params
    params.require(:message).permit(:message, :componentdetail)
  end
  attr_accessible :message, :componentdetail
  belongs_to :componentdetail
end


class Componentdetail < ActiveRecord::Base

  def permitted_params
    params.permit componentdetail: [:compname, :compdisplay, :prefcomprelation]
  end

  def componentdetail_params
    params.require(:componentdetail).permit(:compname, :compdisplay, :prefcomprelation)
  end
  attr_accessible :compname, :compdisplay, :prefcomprelation
  has_many :prefcomprelation
  #accepts_nested_attributes_for :prefcomprelation, :allow_destroy => true
  has_many :message
  #accepts_nested_attributes_for :message, :allow_destroy => true

  def name
    return self.compname
  end
end


controllers

class PreferenceController < ApplicationController
  def index
    @preference = Preference.all
  end

  def show
  end
end


class PrefcomprelationController < ApplicationController
  def index
    @prefcomprelation = Prefcomprelation.all
  end

  def create
    @prefcomprelation = Prefcomprelation.new(precomprelation_params)
    @prefcomprelation.save
  end

  def new
   @prefcomprelation = Prefcomprelation.new(precomprelation_params)
   @prefcomprelation.save
  end

  def show
  end
end


class MessageController < ApplicationController
  def index
    @message = Message.all
  end
def create
@message = Message.new(message_params)
  @message.save
end

  def show
  end
end

class ComponentdetailController < ApplicationController
  def index
    @componentdetail = Componentdetail.all
  end

  def show
  end
end


class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception
end

Admin Pages

ActiveAdmin.register Preference do
end

ActiveAdmin.register Prefcomprelation do


  index do
    selectable_column
    id_column
    column :comment
    column :preference

    column :created_at
    actions
  end

  filter :comment
  filter :preference
  filter :componentdetail

 form do |f|
    f.inputs "Prefcomprelation" do
      f.input :comment
      #f.inputs do
      f.input :preference

      f.input :componentdetail


      end
    f.actions
     # f.input :preference

    end

  end

ActiveAdmin.register Message do
index do
column :message
column :created_at
actions
end

form :html => { :enctype => "multipart/form-data" } do |f|
f.inputs 'Details' do
f.input :message
f.input :componentdetail
end
f.actions
end
end

ActiveAdmin.register Componentdetail do
end

issue comes when I try to create new Prefcomprelation and select preference and componentdetails value from the dropdown menu and try to save. 

same happens to the message page.

1 个答案:

答案 0 :(得分:4)

    form do |f|

         f.inputs "Product Details" do

              f.input :name, :as => :select, 
                            :collection => Product.all.map{|u| ["#{u.product_name}", u.product_name]}

              f.input :description
              f.input :image
              f.input :quantity
         end
        f.actions 
    end

尝试像上面一样添加下拉菜单并在活动管理员中保存选择值。