所以我有这段代码:
<% 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 find
@car = Car.new(params[:car_])
end
答案 0 :(得分:4)
您的查找方法的最后一行是什么?通常,如果未在控制器方法中指定要呈现的模板,则Rails会尝试查找与方法同名的模板。这就是它说无法找到汽车/ find.erb的原因。如果没有在查找操作中看到代码,就很难给出更好的答案。
答案 1 :(得分:1)
您的find方法应该进行一些搜索,而不是使用参数进行初始化。如果您想进行搜索,我建议您查看thinking sphinx或searchlogic之类的内容。
答案 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%>