我正在创建一个网络应用。 虽然它很有效,但在“< %%>”中编写完整的代码片段在轨道上的红宝石中的标签非常难看。
我尝试在controller.rb中定义一个函数,然后从html页面调用它。 这不起作用,因为它无法识别该功能。
我很感激这里有任何帮助。我把功能放在了正确的位置吗?我需要使用“require”加载吗?
例如:
控制器文件:
class WelcomeController < ApplicationController
def index
end
def myfunc(x)
puts x
end
end
HTML文件(index.html):
<h1>Welcome</h1>
<p>
<%= myfunc(5) %>
</p>
答案 0 :(得分:6)
你所指的是在Rails中被称为帮助者。有两种方法可以实现这一点。
第一个选项是将要访问的方法放在辅助模块中。最常见的是ApplicationHelper,您可以在RAILS_ROOT/app/helpers/application_helper.rb
中找到它。如果您将方法放在那里,可以从视图中访问它。
另一种方法,如果您仍然需要/需要在控制器中使用该方法,那么您可以使用helper_method
函数,如下所示:
def WelcomeController < ApplicationController
helper_method :my_func
private
def my_func(x)
puts x
end
end
不需要使用private
,但这只是一种良好的做法,因此该方法不会被意外地用作Controller操作或其他内容。
答案 1 :(得分:0)
Ruby on rails具有Model-View-Controller架构 - 在这些架构中,您无法从视图中访问控制器。
您可以使用函数的输出设置变量,并从视图中访问该变量