RoR App中缺少模板

时间:2012-08-02 13:46:26

标签: ruby-on-rails ruby ruby-on-rails-3

我在rails中创建了一个应用程序“guestbook”,然后我使用“rails g controller entries”创建了一个控制器。之后我在app / views / entries /中创建了index.html,并在其中写了以下内容: -

 <h1>Hello <%= @name %></h1>
<%= form_tag :action => 'sign_in' do %>
<p>Enter your name:
<%= text_field_tag 'visitor_name', @name %></p>
<%= submit_tag 'Sign in' %>
<% end %>

并在entries_controller.rb中写道: -

class EntriesController < ApplicationController
    def sign_in
        @name = params[:visitor_name]
    end
end

之后我运行“rails s” 并转到: -

localhost:3000/entries/
它告诉我一个应该存在的正确观点。

当我输入名称并按下按钮时,它会路由到localhost:3000/entries/sign_in并显示以下错误: -

缺少模板

缺少模板条目/ sign_in,application / sign_in {:locale =&gt; [:en],:formats =&gt; [:html],:handlers =&gt; [:erb,:builder,:coffee]} 。搜索:*“/ home / redblink / rbtest / guestbook / app / views”

请让我知道发生了什么???

2 个答案:

答案 0 :(得分:0)

您必须在/home/redblink/rbtest/guestbook/app/views/sign_in.html.erb中创建一个ERB模板,其中包含您要向用户显示的内容。

答案 1 :(得分:0)

<强>修正:

发生此错误是因为rails服务器无法在sign_in.html.erb目录中找到名为app/views/entries的模板。你应该创建它。

<强>解释

默认情况下,rails尝试查找与您的操作具有相同名称的模板,例如您的情况下为sign_in。如果您不想创建或呈现此默认模板,则需要在操作中使用render方法指定要呈现的另一个模板。 render方法在ActionController :: Base类中定义