我开始搞乱ruby,我的网络开发经验很少。我试图了解ruby代码注入如何与yield snippets一起使用。我一直在攻击谷歌的示例书代码
我目前正在主视图/ layout /目录中查看此代码段
<div class="container">
<% if flash.any? %>
<% flash.each do |type, message| %>
<div class="alert alert-<%= type %>"><%= message %></div>
<% end %>
<% end %>
<%= yield %>
</div>
我很难搞清楚如何将链接转到/view/books/index.html.erb
<h3>Books</h3>
<%= link_to new_book_path, class: "btn btn-success btn-sm" do %>
<i class="glyphicon glyphicon-plus"></i>
<span>Add Book</span>
<% end %>
<% @books.each do |book| %>
<div class="book media">
<%= link_to book_path(book) do %>
<div class="media-left">
<img src="<%= book.image_url %>">
</div>
<div class="media-body">
<h4><%= book.title %></h4>
<p><%= book.author %></p>
</div>
<% end %>
</div>
<% end %>
<%= render "pagination_link" %>
<% if @books.none? %>
<p>No books found.</p>
<% end %>
这是一个rake路线,所以你不必运行它
rake routes
Prefix Verb URI Pattern Controller#Action
books GET /books(.:format) books#index
POST /books(.:format) books#create
new_book GET /books/new(.:format) books#new
edit_book GET /books/:id/edit(.:format) books#edit
book GET /books/:id(.:format) books#show
PATCH /books/:id(.:format) books#update
PUT /books/:id(.:format) books#update
DELETE /books/:id(.:format) books#destroy
login GET /login(.:format) redirect(301, /auth/google_oauth2) auth_google_oauth2_callback GET /auth/google_oauth2/callback(.:format) sessions#create
session POST /session(.:format) sessions#create
DELETE /session(.:format) sessions#destroy
user_books GET /user_books(.:format) user_books#index
logout GET /logout(.:format) sessions#destroy
root GET / books#index
答案 0 :(得分:2)
yield
是Ruby&#39; block syntax
的一部分。
def hello
"Hello, #{yield}!"
end
> hello { "World" }
# => "Hello, World!"
在此示例中,hello
方法生成我们传入的块以获取值,并将其添加到字符串中。
将模板视为一种特殊类型的文件,用于创建生成html的函数。布局和局部是将模板嵌入到另一个内部的方法,就像您可以从另一个函数中调用函数一样。
您的模板由Controller呈现,因此它根据Rails conventions知道需要呈现的视图以及它所属的布局。
答案 1 :(得分:1)
它没有尝试查找视图。它只是将控件传递给控制器,以便控制器可以决定渲染哪个视图。