使用rails-sqlserver-adapter在rails应用程序中显示数据

时间:2012-03-15 05:22:59

标签: ruby-on-rails sql-server activerecord

https://github.com/rails-sqlserver/activerecord-sqlserver-adapter

非常棒的工具,我插入SQLServer 2008时遇到了一些麻烦 弄清楚如何从rails控制台执行SP,但我不知道在哪里 离开这里:(

这似乎是一个愚蠢的问题,但我很新 发展所以任何帮助将不胜感激!!

以下是我从控制台运行SP(PD_DE_getSegmentProfile)的方法:

$ PdDeSegmentMaster.execute_procedure :PD_DE_getSegmentProfile, 23, 'all' 

Execute Procedure (49.6ms)  EXEC PD_DE_getSegmentProfile 23, 'all' 
 => [{"segment_code"=>"23", "profile_element"=>"age_range", 
"Value"=>"35-54"}, {"segment_code"=>"23", 
"profile_element"=>"avg_HH_size", "Value"=>"4.10"} 

我知道这是一个哈希,但我不知道如何从我的应用程序调用它, 在视图中显示它,等等。我真的不关心存储 因为我可以回想起SP再次获得它。我在哪里放 SP在应用程序中调用?控制器?模型?

database.yml,externaldb.rb(model)以及设置连接所需的基础知识都很好,只需要将返回的哈希移动到HTML。

1 个答案:

答案 0 :(得分:1)

最好将业务逻辑转变为模型。

让我们说你正在使用控制器“PdDeSegmentMastersController”

class PdDeSegmentMasterController < ActionController
  def get_segment_profile
    @segment_profiles = PdDeSegmentMaster.get_segment_profile
  end 
end

在您的模型“PdDeSegmentMaster”

class PdDeSegmentMaster < ActiveRecord::Base
 #write a method to execute you stored procedure
  def self.get_segment_profile
    self.execute_procedure :PD_DE_getSegmentProfile, 23, 'all'
  end
end

在您的视图“get_segment_profile.html.erb”

<% if @segment_profiles.present? %>
<table>
 <tr>
   <th>segment_code</th>
   <th>profile_element</th>
   <th>Value</th>
 </tr>
 <% @segment_profiles.each do | segment_profile| %>
   <tr>
    <td><%= segment_profile["segment_code"] %></td>
    <td><%= segment_profile["profile_element"] %></td>
    <td><%= segment_profile["Value"] %></td>
   </tr>
 <% end %>
</table> 
<% else %>
 <h1>No segment profiles found!</h1>
<% end %>

如果你还有任何积木,请告诉我。