2016-03-20 5 views
-2

Я новичок в рельсах и пытаюсь создать небольшой проект, чтобы ознакомиться с каркасом. В настоящее время я пытаюсь создать очень простое представление, показывающее, сколько звезд выдает средний рейтинг (вроде системы рейтинга Amazon 5-Star). Эта проблема я не могу понять сам. Я построил «stars_view», но код rails не будет отображать какой-либо html. Вероятно, это была ошибка новичка, но я не нашел его в течение нескольких дней.Rails view not rendering HTML code

Это, как я сделать частичный вид:

<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> 

Это HTML код я получаю в Safari:

<div id="stars_view"> 
    Stars 

</div> 

Я знаю, что в самом представлении есть некоторые ошибки. Я разрешу их позже. На данный момент любая помощь, создающая рельсы, генерирует любой HTML-код. Частично сохраняется как application/_stars_view.html.erb, все изображения также должны быть в нужном месте.

ответ

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 %> 

Etcetera.