我正在创建一个显示表格的简单html页面。要在表中填充的数据在app.rb中的ruby函数中检索。我正在尝试使用haml来创建网页。我在views文件夹中有一个index.haml文件,我在其中创建了网页模板
%body
.table-div
%table
%tr
%th //some ruby code to get the table header
%tr
%td //create td for each table row.
之后我需要在app.rb中调用ruby函数get_table_header()和get_table_rows()。这样做的语法是什么?如何在这个haml中包含对ruby文件的引用?
答案 0 :(得分:5)
对于视图中控制器可用的方法,您需要在控制器中将其指定为helper
方法。像这样:
class ApplicationController < ActionController::Base
helper_method :get_table_header, :get_table_row
def get_table_header
< code here >
end
def get_table_row
< code here >
end
end
查看更多:Helper Methods
然后,有两种方法可以在HAML中执行Ruby代码。首先,使用'='符号。这将执行ruby代码并写入(显示)返回的结果。我相信这就是你要找的东西。
%body
.table-div
%table
%tr
%th
= get_table_header
%tr
%td
= get_table_row
这与在ERB中执行<%= get_table_row %>
相同。
注意:您不需要括号来执行Ruby方法。其次,这些方法名称看起来像HTML部分。您可以将此代码抽象为另一个HAML文件,并使用Rails Partial帮助程序调用它们。您可以在Layouts and Rendering in Rails
了解更多信息在HAML中执行Ruby代码的第二种方法是使用hiphen。这对条件有好处。例如:
-if <some condition is true>
= get_table_header
-else
= get_table_row
这就像在ERB中执行<% some code %>
一样。返回的结果不会显示在页面上。也适合映射迭代。也许你有多个表行。
-dog_names = ["Teddy", "Skip", "Humphrey"]
-dogs_names.map do |name|
%td= name
这将返回3个带有名称的标签。
<td>Teddy</td>
<td>Skip</td>
<td>Humphrey</td>
您还可以在控制器中包含辅助文件。 这些助手确实会掌握辅助方法。
class YourController < ApplicationController
include HelperOne
include HelperTwo
end
答案 1 :(得分:0)
使用-r
命令的haml
选项
haml input.haml output.html -r ./ruby_file.rb
调用ruby函数并将其值插入输出中使用=
运算符
%body
.table-div
%table
%tr
%th= get_table_header
%tr
%td= get_table_rows
答案 2 :(得分:0)
您需要将app.rb中的函数包含到控制器中。