2011-06-20 9 views
0

のRails 2.3.5レール、

は、私はしばらくの間でレールを使用していないと私は少し練習の外だ外部DBにレコードを保存するためにRailsのフォームを作ります。私が作業しているアプリケーションでは、実行中のプロセスによってスキャンされ、チケットシステムにチケットを作成する外部データベースがあります。私がする必要があるのは、レコードをそこに保存するだけです。

私はdbを接続し、新しいモデルオブジェクトを作成してフォームを使用する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)を使用しています。必ず、正しくconfig/routes.rbファイル内でこのようなものを使用してTamTicketingモデルをルーティングしていることを確認のRails 2.3.5では

resources :tam_ticketings 
1

のconfig/routes.rbをこのようになります。そして、

map.resource :tam_ticketing

サーバーを再起動/起動し、再度ビューを参照してください。

あなたのコントローラーでは、上記のルーティングが正しく動作するように、あなたのアクションの適切な命名は 'new'で、 'new_tickets' inorderではありません。そうしないと、これを追加する必要があります。

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

私は、あなたのコントローラがTamTicketings(ファイル名はtam_ticketingsある)と命名され、アクションが

+0

「新しい」である私はまだかなり混乱していることを確認することをお勧め私はリソースをマップし、私が持っていたアクションとビューを接続しました。 「tam_ticketings」と呼ばれるものは何もありません。外部のdbモデルは "tam_ticketing"と呼ばれ、コントローラは "tickets_controller"と呼ばれていました。何が起きていても、Railsは外部の "tam_thicking" dbからパスを作成し、その末尾に "s"を追加しようとしています。そのモデルのコントローラーやビューはありません。何かがあれば、 "new_ticket"というticket_controllerのアクションを探しているはずです。申し訳ありません - 私は完全に失われています。ありがとう! – Reno

+0

私はなぜフォームタグを変更して動作を指定するのかわかりません:<%form_for(@ticket、:url => {:action => 'create'}))do | f | %> – Reno