Я работаю над приложением в rails 5, и моя цель - отображать продукты на страницах показа страницы, используя жидкость.
page.rb
def to_liquid
Product.all
end
product.rb
belongs_to :category
def to_liquid
{ 'name' => self.name,
'price' => self.price,
'description' => self.description,
'category' => self.category
}
end
category.rb
has_many :products
def to_liquid
{ 'name' => self.name}
end
show.html.erb (Page)
<%= RedCloth.new(Liquid::Template.parse(@page.content).render('page' => @page)).to_html %>
_form.html.erb (страница)
<%= form_with(model: page, local: true) do |form| %>
<% if page.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(page.errors.count, "error") %> prohibited this page from being saved:</h2>
<ul>
<% page.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= form.label :name %>
<%= form.text_field :name %>
</div>
<div class="field">
<%= form.label :content %>
<%= form.text_area :content %>
</div>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
В текстовой области для содержания, если я добавлю текст ниже
Test for liquid in rails
{% for product in page.products %}
*{{ product.name }}* {{ product.price }}
Category: {{ product.category.name }}
{% endfor %}
на странице показа появляется только «Тест на жидкость в рельсах», но продукты не отображаются. Пожалуйста, помогите мне выяснить, где я иду не так, я совершенно новичок в жидкости.
Вместо определения to_liquid я использовал в модели liquid_methods, но я получил ошибку неопределенного метода `liquid_methods, поэтому нашел в stackoverflow определение to_liquid. Я следую учебнику http://railscasts.com/episodes/118-liquid?autoplay=true