将html导入rails方法(在helper.rb中)

将html导入rails方法(在helper.rb中),html,ruby-on-rails,ruby,ruby-on-rails-3,Html,Ruby On Rails,Ruby,Ruby On Rails 3,我需要几次这段代码,为了遵循DRY方法(不要重复自己),我想避免使用这段代码并重新键入5次或更多。所以我想定义包含ruby和html以及ruby在html和js中的代码的方法。但我在认识上有问题 我的html.erb如下所示: <% div_count = 1 %> <div> <% for post in @posts %> <div class="post-on-main-page-<%= div_count %>"

我需要几次这段代码,为了遵循DRY方法(不要重复自己),我想避免使用这段代码并重新键入5次或更多。所以我想定义包含ruby和html以及ruby在html和js中的代码的方法。但我在认识上有问题

我的html.erb如下所示:

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

$(“#js count-”)。单击(函数(){
window.location.href=“”;
});
我想要create方法,我认为在应用程序中_helper.rb可以处理这段代码。什么看起来像这样:

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
def方法名称(参数)
$(“#js count-”)。单击(函数(){
window.location.href=“”;
});
结束
结果是我想要的html.erb

<%= method_name(@posts)%>


我如何才能使其工作?

您可以将此代码移动到一些html中。当您想使用它时,只需调用render方法

<%= render 'html_file' %>

您可以将此代码移动到某些html中。当您想使用它时,只需调用render方法

<%= render 'html_file' %>


use partials use partials是的,但是@posts变量将在不同的页面上更改,我希望避免复制粘贴代码5到6次。如果我想在一页上改变一些东西,它必须在每一页上都改变。所以你推荐的方法对我不起作用。你可以尝试这样做:
def method\u name(params)@posts=params;呈现“html_文件”;结束
是,但是@posts变量将在不同的页面上更改,我希望避免复制粘贴代码5到6次。如果我想在一页上改变一些东西,它必须在每一页上都改变。所以你推荐的方法对我不起作用。你可以尝试这样做:
def method\u name(params)@posts=params;呈现“html_文件”;结束