0

尝试基于下拉菜单更改 Web 应用程序架构。我有一种感觉,我没有拉下拉选择。

模型:

class MyApp < ActiveRecord::Base 
def initialize(dbase)
 @dbase = fdbase
 if @dbase == 'DB01'
   ActiveRecord::Base.establish_connection"#{Rails.env}"
 else
   ActiveRecord::Base.establish_connection"#{Rails.env}_#{@fc}"
end
end
end

控制器:

class MyAppController < ApplicationController
before_filter :initialize_remote_user

   def self.search(name)
     @results = MyApp.search(params[:name])
     @dbase = params[:dbase].inspect
     c = MyApp.new(@dbase)
     result = c.last 
    end

   def result
     c = MyApp.new(@dbase)
     result = c.last
     @results =  MyApp.where("name = ?",params[:name]).order("item_scan_date ASC")
     puts @results.inspect
   end


   def update
    @results = MyApp.Where(name: name_params)
    @dbase = params[:dbase].inspect
    end

   def change
     @results = MyApp.Where(name: name_params)
     @dbase = params[:dbase].inspect
     end

   def show
    @dbase = params[:dbase].inspect
    c = MyApp.new(@dbase)
    result = c.last
   end

   def create
   end

   def new
   end

   def index
     @dbase = params[:dbase].inspect
     c = MyApp.new(@dbase)
     result = c.last
   end

  private

  def name_params
     params.require(:name).permit(:name)
  end

  def dbase_params
     params.require(:dbase).permit(:dbase, :id)
  end

end

下拉菜单在我的导航栏上并在 _nav.html.erb 中拉入:下面是 _dbform.html.erb

<div id="float_right">
<%= form_for @dbase do |f| %>
<%= f.select( :dbase, options_for_select([['DB01','DB01'],['DB02','DB02'],['DB03','DB03'],['DB04','DB04']])) %>
<% end %>

</div>

生产和开发相同的database.yml。

# Uses RubyGem-activerecord-jdbcsqlite3-adapter

development:
  adapter: mysql2
  host: myhost
  database: DB01
  encoding: utf8
  port: 3306

development_DB2:
  adapter: mysql2
  host: myhost
  database: DB02
  encoding: utf8
  port: 3306

development_DB3:
  adapter: mysql2
  host: myhost
  database: DB03
  encoding: utf8
  port: 3306

development_DB4:
  adapter: mysql2
  host: myhost
  database: DB04
  encoding: utf8
  port: 3306

我不确定我做错了什么。

4

1 回答 1

0

而不是控制器代码,查看错误的实际回溯可能会更有用......因为从中可能会找出AR和AR-JDBC版本,无论如何作为盲拍试试这个:

if @dbase == 'DB01'
  ActiveRecord::Base.establish_connection "#{Rails.env}".to_sym
else
  ActiveRecord::Base.establish_connection :"#{Rails.env}_#{@dbase}"
end

...使用符号 +@dbase似乎是我们需要的变量

于 2014-08-05T05:41:01.283 回答