2009-11-23 193 views
0

,所以我有这样的代码模板丢失缺少模板

缺少模板汽车/ find.erb鉴于 路径H:\ Documents和 设置/老板/我 文档/的NetBeansProjects/Rails的Application5 /应用/视图

中找到DEF(在控制器中)

def find 
    @car = Car.new(params[:car_]) 
end 
+0

你有':动作=>“find''但你的方法被称为'搜索' – JosephL 2009-11-24 00:22:06

+0

啊sry复制了错误的方法: 找到的方法是 def find @car = Car.new(params [:car_]) end – Lilz 2009-11-24 00:35:27

回答

4

什么是你的查找方法的最后一行?通常,如果您没有指定要在您的控制器方法中呈现的模板,Rails将尝试查找与方法名称相同的模板。这就是为什么它说它无法找到cars/find.erb。没有看到你的发现行为中的代码,很难给出更好的答案。

+0

加入问题! – Lilz 2009-11-24 00:44:49

+0

Chirs是对的。如果你没有查找你的find方法,那么你需要在你的方法结束时重定向,比如'render:action =>:show' – JosephL 2009-11-24 01:47:53

1

你的查找方法应该做一些搜索,而不是用参数初始化。如果您想搜索,我建议查看thinking sphinxsearchlogic之类的内容。

1

我相信你的代码正在执行查找操作。但是,在找到汽车物体后,需要将其写入显示搜索结果的模板中。按照惯例,rails在该控制器的view文件夹中查找名为find.html.erb的文件。所以,你所看到的错误信息意味着Rails已经执行了你的行为中的代码行,并且正在尝试生成一些HTML以发送回浏览器

如果你在视图文件夹中创建了一个简单文件控制器与内容:

<%= @car.name %> 

您应该看到结果。

但是,您的代码有点让我困惑,因为我不知道为什么find方法会创建一个新的Car对象。我希望这样的事情:

def find 
    @car = Car.find_by_name(params[:name]) 
end 

我也期待您的形式会更喜欢:

<% form_tag(:action => 'find') do%> 
    Product name: 
    <%= text_field_tag("name", :size => "30") %> 
    <%= submit_tag "find" %> 
<%end%>