在html.erb文件中创建方法

时间:2015-04-24 06:14:26

标签: html ruby erb

我必须在文件中创建一个说'myCode.html.erb'的方法。我必须用html编写ruby代码。到目前为止,我开始知道如何编写方法并调用该方法如下。

method creation
<%def helo
    print "This is function"
end%>

<%=helo%> #calling method

但是我在如何编写我必须编写ruby和html代码的方法时陷入困境。下面是我需要用方法编写的代码。

<% 
   actions.each{ |action|
     tc = []
     bizA = []
     testcaseName = ''
     bizActionName = '' 
     @factory.testcases.rows({'steps.action._actionId' => action["_id"]}).each{|testcase|
       d = ''
       testcaseName = testcase['attributes']['name'] + d
       d = ', '
       tc << testcaseName
     }
    # require 'ruby-debug' ; debugger
     if !action['isGrouping']
     actions.each{|act|
     if act['isGrouping']
       temp = []
       temp = act['steps']
       temp.each{|step|
         if action['_id']==step['action']['_actionId']
           bizA << act['name']
         end
       }
      end 
     }
     end
%>
    <tr>
      <td><%= name %></td>
      <td><%= action['name']  %></td>
      <td><%= @factory.testcases.rows({'steps.action._actionId' => action["_id"]}).length %> </td>
      <td>
        <% counter=1%>
        <% for ix in 0..tc.length-1 %>
          <% if counter%2==0 %>
            <%if ix!=tc.length-1 %>
              <font color="black"><%= tc[ix] %></font> <br/>
            <%else%>
              <font color="black"><%= tc[ix] %></font> <br/>
            <%end%>
          <% else %>
            <%if ix!=tc.length-1 %>
              <font color="brown"><%= tc[ix] %></font> <br/>
            <%else%>
              <font color="brown"><%= tc[ix] %></font> <br/>
            <%end%>

          <%end%>
        <% counter=counter+1 end %>
      </td>
      <td><%=bizA.length%></td>
      <td>
        <% counter=1%>
        <% for ix in 0..bizA.length-1 %>
          <% if counter%2==0 %>
            <%if ix!=bizA.length-1 %>
              <font color="black"><%= bizA[ix] %></font> <br/>
            <%else%>
              <font color="black"><%= bizA[ix] %></font> <br/>
            <%end%>
          <% else %>
            <%if ix!=bizA.length-1 %>
              <font color="brown"><%= bizA[ix] %></font> <br/>
            <%else%>
              <font color="brown"><%= bizA[ix] %></font> <br/>
            <%end%>

          <%end%>
        <% counter=counter+1 end %>
      </td>  
    </tr>  
<% } %>

如果我将上面创建的方法helo作为参考并以这种方式编写这个ruby + html代码,它就无法正常工作。它显示语法错误。

4 个答案:

答案 0 :(得分:1)

使用辅助方法。使用rails DRY原则。

只需在ApplicationHelper模块中编写方法。

示例:

module ApplicationHelper
  def halo
    "This is function" 
   end
 end

答案 1 :(得分:1)

你真的不想做什么。但你可以做到。

function collide(r1,r2){
    var dx=(r1.x+r1.w/2)-(r2.x+r2.w/2);
    var dy=(r1.y+r1.h/2)-(r2.y+r2.h/2);
    var width=(r1.w+r2.w)/2;
    var height=(r1.h+r2.h)/2;
    var crossWidth=width*dy;
    var crossHeight=height*dx;
    var collision='none';
    //
    if(Math.abs(dx)<=width && Math.abs(dy)<=height){
        if(crossWidth>crossHeight){
            collision=(crossWidth>(-crossHeight))?'bottom':'left';
        }else{
            collision=(crossWidth>-(crossHeight))?'right':'top';
        }
    }
    return(collision);
}

答案 2 :(得分:0)

在某个Helper中定义方法

module TestHelper
  def test
    return 'Hello World'
  end
end

在HTML文件/ .erb中,只需插入

即可
<%= TestHelper.test %>

在您的HTML中,您会看到“Hello World&#39;

答案 3 :(得分:0)

一种正确的方法是定义可以消耗参数的部分。

要实现这一点,您可以使用以下方法从调用视图中呈现部分视图:

<%= render partial: "my_partial", locals: {variable: "my value", other_variable: "other value"} %>

在部分变量中,只需使用以下命令将变量的值呈现在其中:

<%= variable %>

例如,

<span>Variable has value <%= variable %>, while the other variable has value <%= other_variable %>.</span>