2011-06-20 22 views
0

的Rails 2.3.5導軌,使一個Rails的形式記錄保存到外部數據庫

我還沒有在一段時間使用Rails和我有點生疏了。對於我正在處理的應用程序,有一個外部數據庫由正在運行的進程掃描並在票證系統中創建票證。我只需要在那裏保存一條記錄。

我以爲我可以連接數據庫並使用Rails窗體創建一個新的模型對象,然後窗體使用該窗體 - 提交窗體的位置應該轉到控制器中的創建操作。

我從試圖獲得的錯誤讓我難住了(未定義的方法`tam_ticketings_path')。

感謝您的任何提示或幫助。我從來沒有必要處理將記錄保存到應用程序之外的數據庫,我不確定我應該在這裏做什麼(除了返回到HTML表單和手動SQL Insert語句)。

謝謝!

database.yml中:

tam_ticketing_db: 
    adapter: mysql 
    database: tam_ticketing_1 

模型:tam_ticketing

class TamTicketing < ActiveRecord::Base 
    TamTicketing.establish_connection "tam_ticketing_db" 
    set_table_name "tickets" 
end 

門票控制器的方法:

def new_ticket 
    @ticket = TamTicketing.new 

new_ticket視圖:

<% form_for(@ticket) do |f| %> 
    <%= f.error_messages %> 

錯誤:

Showing app/views/tickets/new_ticket.html.erb where line #1 raised: 

undefined method `tam_ticketings_path' for #<ActionView::Base:0x3b01f18> 

Extracted source (around line #1): 

1: <% form_for(@ticket) do |f| %> 
2: <%= f.error_messages %> 
3: 
4: <p> 

回答

1

當您使用form_for(someModelInstance)它將使用轉到創建/更新動作路徑方法。請確保你已經正確地路由使用這樣的事情你TamTicketing模型在config/routes.rb文件

resources :tam_ticketings 
1

在Rails 2.3.5配置/ routes.rb中應該是這樣的:

map.resource :tam_ticketing

然後重新啓動/啓動服務器並再次瀏覽您的視圖。

同樣在您的控制器上,您的操作的正確命名應該是'新'而不是'new_tickets',以便上述路由正常工作。否則,你需要補充一點:

map.new_ticket 'tam_ticketings/new_ticket', :controller => 'tam_ticketings', :action => 'new_ticket' map.resource :tam_ticketing

我建議確保您的控制器被命名爲TamTicketings(文件名是tam_ticketings)和動作是「新」

+0

我仍然很困惑,我做了地圖資源並連接了我的行動和觀點。沒有什麼叫「tam_ticketings」。外部數據庫模型被稱爲「tam_ticketing」,那麼我所擁有的控制器被稱爲「tickets_controller」。無論發生什麼,Rails都試圖從外部「tam_thicking」db中創建一條路徑,並在其末尾添加「s」。該模型沒有控制器或視圖。如果有什麼,它應該在tickets_controller中尋找名爲「new_ticket」的操作。對不起 - 我完全失去了。謝謝! – Reno

+0

不知道爲什麼,但如果我改變表單標籤來指定它的作用:<%form_for(@ticket,:url => {:action =>'create'})do | f | %> – Reno

相關問題