我必须在文件中创建一个说'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代码,它就无法正常工作。它显示语法错误。
答案 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>