2011-10-06 16 views
0

我正在創建一個web應用程序。 儘管它的效果很好,但在Ruby on Rails中「<%%>」標記內寫入整段代碼非常難看。如何在HTML頁面中包含我自己的Ruby(on rails)函數

我試圖在我的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

請閱讀:http://stackoverflow.com/editing-help – thirtydot

回答

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的使用,但只有好習慣,該方法不能被意外地用作控制器動作或其他東西。

+0

如果它不是真的與演示相關,而是更多地與對象有關 - 比如說你有一個控制器/ PatientController,models/Patient和views/Patient,那麼該功能可以進入模型/患者。然後您可以通過聲明患者的新實例來在控制器內調用它。另外(至少我曾經在Rails 2中使用過這種方法),你可以在lib文件夾中設置一個類,然後使用'require'將它拖入需要使用的控制器中 - 找到這種方法對通用類,如存儲對象,我在各地使用。 – Pasted

+0

非常感謝!有用。 – eran

+0

我有一個後續問題。我嘗試了以下方法: – eran

0

Ruby on Rails的具有Model-View-Controller架構 - 在這些您無法從視圖訪問控制器的體系結構。

您可以設置一個變量,從函數的輸出,並從您的視圖訪問變量

相關問題