我是rails的新手,并尝试构建一个小项目来熟悉框架。我目前正试图建立一个非常简单的视图,表明平均评级给出了多少颗星(有点像亚马逊五星评级系统)。这个问题我无法弄清楚自己。我建了一个" stars_view"但rails代码不会渲染任何HTML。这可能是一些初学者的错误,但我好几天都找不到它。
这是我呈现局部视图的方式:
<div class="col-sm-8">
<h2><%= @document.title %></h2>
<%= render :partial=>'application/stars_view', :locals => {:number_of_stars => @document.average_rating_number_of_stars} %>
<br/>von
<%= @document.user.email %>
<br/>
<p>
<%= @document.description %>
</p>
</div>
这是我的部分代码:
<div id="stars_view">
Stars
<%=
#this link is for test purposes but even this does not show.
link_to 'Back', documents_path
rounded_number_of_stars = (number_of_stars.to_int*2.0)/2.0
max_number_of_stars = 5
drawn_number_of_stars = 0
while rounded_number_of_stars >= 1 do
image_tag("stars/star_full.png", :class => "img-responsive")
rounded_number_of_stars -= 1
drawn_number_of_stars += 1
#byebug stops here
#byebug
end
if rounded_number_of_stars == 0.5
image_tag("stars/star_half.png")
drawn_number_of_stars += 1
#and here
#byebug
end
while drawn_number_of_stars < max_number_of_stars do
image_tag("stars/star_empty.png")
drawn_number_of_stars += 1
#and here
#byebug
end
%>
</div>
这是我在Safari中获得的HTML代码:
<div id="stars_view">
Stars
</div>
我知道视图本身可能存在一些错误。我稍后会解决这些问题。现在任何帮助制作rails生成任何HTML将不胜感激。部分保存为application / _stars_view.html.erb,所有图像也应该在正确的位置。
答案 0 :(得分:2)
<%=
语法仅输出代码返回的最后一个内容。不是一切都在里面。这就是你没有看到输出的原因。
您要在屏幕上显示的所有内容都必须位于其自己的<%=
标记中。
要运行任意代码,请使用<%
。
例如:
<%- while rounded_number_of_stars >= 1 do %>
<%= image_tag("stars/star_full.png", :class => "img-responsive") %>
<% rounded_number_of_stars -= 1
drawn_number_of_stars += 1
%>
<% end %>
等等。