繁体   English   中英

我在新的Rails应用程序中创建了一个文件,当我运行http:// localhost页面时,我收到一条Missing Template错误消息

[英]I created a file in my new rails app and when I run the http://localhost page I get a Missing Template error message

这是我得到的错误:

Posts#index中的ActionView :: MissingTemplate

缺少带有{:locale => [:en] 、: formats => [:html],...的部分text_posts / _text_post ...

提取的源(第5行附近):

    3 </div>
    4
    5 <%= render @posts %>

这是文件app / views / posts / index.html.erb中的代码

    <div class="page-header">
    <h1>Home</h1>
    </div>
    <%= render @posts %>

我遵循的是“ Rails Crash Course”这本书,这是创建社交网络的步骤之一。 我不知道错误的原因。

当您使用<%= render @posts %> ,我确定这将在同一目录中调用带有前导_符号的部分文件。 请确保您已经使用_posts.html.erb 如果您要将值传递给partial,在这里我给您简单的说明:

假设您在customer_controller具有以下内容:

def show
 @customer= Customer.find(params[:id])
end

然后它的实例将在show.html.erbshow.html.erb

<p>Item: <%= @customer.name%></p>

这些实例变量在布局和局部视图中也可用,而是将变量作为局部变量传递给局部视图,例如:

// here is the same concept with your problem
// render "cust_name" find the filename leading with underscore
<%= render "cust_name", name: @customer.name%>

上面的代码行将调用名为_cust_name.html.erb的文件,其中包含:

<h1><%= name %></h1>

希望这会有所帮助。

我假设在您的posts_controller.rb文件中指定了以下内容:

def index
  @posts = Post.all
end

之所以出现此错误,是因为Rails试图显示变量@posts部分内容 这里隐含的是,Rails在文件夹app/views/posts/寻找名为_post.html.erb的文件,但未找到任何内容。 要解决此问题,您将必须在该目录中手动创建文件( 请注意,所有部分均以下划线开头 )。

现在,如果您想知道应该在此部分中放入什么,首先应该知道<%= render @posts %>在做什么。 当涉及局部时,它将遍历您的所有帖子,对于每个帖子,它都会做某事。 所以您的部分可能看起来像这样:

<p>
  <%= link_to post.title, post_path(post.id) %>
</p>
<p>
  <%= link_to "Edit", edit_post_path %>
</p>
<p>
  <%= link_to "Delete", post_path(post.id), method: :delete %>
</p>

只知道这里隐含的是,我们已经有一个@posts.each do |post| 为我们提供的信息,因此您只需定义希望为每个帖子显示的内容即可。

希望这可以帮助!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM