mercredi 17 août 2016

Import html to rails method (in helper.rb)

I need piece of code for couple of times, and to follow DRY method (don't repeat yourself) i want to escape using this piece and retyping it for 5 times or more. So I want to define method what will contain both ruby and html, and ruby in html and js to, code. But I have problems with realization.

My html.erb look like this:

<% div_count = 1 %>
<div>
  <% for post in @posts %>
    <div class="post-on-main-page-<%= div_count %>"
         id="js-count-<%= div_count_for_js %>">
      <script>
        $("#js-count-<%= div_count_for_js %>").click(function(){
          window.location.href = "<%= post_url(post) %>";
        });
      </script>
    <%= image_tag(post.picture.url) %>
    <span><h5><%= post.theme %></h5></span>
  </div>
  <% end %>
<% div_count += 1 %>
<% if div_count == 4 %>
  <% div_count = 1 %>
<% end %>
</div>

And I want create method, I think in application_helper.rb will do with this piece of code. What will look something like that:

def method_name(parameter)
<% div_count = 1 %>
    <div>
      <% for post in parameter %>
        <div class="post-on-main-page-<%= div_count %>"
             id="js-count-<%= div_count_for_js %>">
          <script>
            $("#js-count-<%= div_count_for_js %>").click(function(){
              window.location.href = "<%= post_url(post) %>";
            });
          </script>
          <%= image_tag(post.picture.url) %>
          <span><h5><%= post.theme %></h5></span>
        </div>
      <% end %>
    <% div_count += 1 %>
    <% if div_count == 4 %>
      <% div_count = 1 %>
    <% end %>
  </div>
end

The result what I want for html.erb

<%= method_name(@posts)%>

How can I make this to work?

Aucun commentaire:

Enregistrer un commentaire