缺少模板

时间:2009-11-23 23:51:06

标签: ruby-on-rails templates views

所以我有这段代码:

<% form_tag(:action => 'find') do%>
  Product name:
  <%= text_field("cars_", "name", :size => "30") %>
  <input type ="submit" value="Find"/>
<%end%>

按下按钮后,我希望它完成控制器中找到的方法(def find),但是它请求html.erb文件:

缺少模板

  

在视图中缺少模板cars / find.erb   路径H:\ Documents and   设置/老板/我的   文档/的NetBeansProjects / RailsApplication5 /应用/视图

找到def(在控制器中找到)

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

3 个答案:

答案 0 :(得分:4)

您的查找方法的最后一行是什么?通常,如果未在控制器方法中指定要呈现的模板,则Rails会尝试查找与方法同名的模板。这就是它说无法找到汽车/ find.erb的原因。如果没有在查找操作中看到代码,就很难给出更好的答案。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

我相信您的代码正在执行查找操作。但是,在找到汽车对象后,需要将其写入显示搜索结果的模板中。按照惯例,rails在该控制器的视图文件夹中查找名为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%>