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>
答案 0 :(得分:1)
当您使用form_for(someModelInstance)
时,它将使用转到创建/更新操作的路径方法。确保您在config/routes.rb
文件
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”