Rails,制作Rails表单以将记录保存到外部数据库

时间:2011-06-20 18:03:59

标签: ruby-on-rails

Rails 2.3.5

我有一段时间没有使用Rails而且我有点没有练习。对于我正在处理的应用程序,有一个外部数据库,它由正在运行的进程扫描并在故障单系统中创建票证。我需要做的就是在那里保存一条记录。

我以为我可以连接数据库并使用Rails表单创建一个新的模型对象,然后表单使用它 - 提交表单应该只是转到控制器中的创建操作。

我从尝试这个中得到的错误让我感到难过(未定义的方法`tam_ticketings_path')。

感谢您的任何提示或帮助。我从来没有必要处理将记录保存到应用程序外部的数据库,我不确定我应该在这里做什么(保存回到HTML表单和手动SQL插入语句)。

谢谢!

database.yml中:

tam_ticketing_db:
  adapter: mysql
  database: tam_ticketing_1

model: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>

2 个答案:

答案 0 :(得分:1)

当您使用form_for(someModelInstance)时,它将使用转到创建/更新操作的路径方法。确保您在config/routes.rb文件

中使用类似的方式正确路由了TamTicketing模型
resources :tam_ticketings

答案 1 :(得分:1)

在Rails 2.3.5中,config / 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),操作为“new”