2014-10-09 79 views
1
class HellosController < ApplicationController 


    def index 
    #do sth here 
    end 

    def new 
    #do sth here 
    end 

    def edit 
    #do sth here 
    end 

    def report 
    #how can I display different format of report according to diff value of a variable ?  
    end 

end 

我知道在控制器的每個不同的功能,可以有一個觀點,現在我有這個報告鏈接到一個報告view.I需要補充報告的觀點爲這個項目。Ruby on Rails的控制器中的一個功能有不同的看法

如何根據變量顯示不同的視圖say @reportType? 我需要添加到控制器中?我應該如何命名添加的報告視圖?

回答

2

您可以檢查@report_typereport.html.erb

例如: 在report.html.erb

<% if @report_type == "this" %> 
<%= render partial: "this" %> 
<% elsif @report_type == "that" %> 
<%= render partial: "that" %> 
<% end %> 

在這裏,您將有兩個諧音一樣

_this.html。 erb and _that.html.erb

通過這種方式,您可以針對報告類型擁有適當頁面的多個視圖。

0
在您的鏈接

發送report_id作爲參數

= link_to "See report", your_report_path + "?report_id=" + report.id 

在你report行動

def report 
    @reportType = ReportModel.find params(:report_id) 
end 

report.html.erb,你可以使用這個變量,例如

Name of the report is <%= @reportType.name %> 
+0

謝謝!你能解釋一下嗎?我的報告沒有任何鏈接,在我看來它叫做report.html.erb - 我認爲它們是通過名字轉換鏈接的。如何將這個名稱鏈接改爲你的方法?以及第二個報告視圖在哪裏添加以及如何命名? – Orz 2014-10-09 09:12:58

+0

你打算如何報告頁面,通過點擊一些鏈接的權利? – RSB 2014-10-09 09:13:56

+0

我已經把問題報告的內容,似乎沒有鏈接那裏...在應用程序中,當我點擊一個按鈕稱爲報告,報告頁面將顯示 – Orz 2014-10-09 09:18:27

1

在控制器,你可以渲染不同的網頁,如果條件

如:

 
if [condition] 
    render "abc" 
else 
    render "xyz" 
end 
1

很容易的。這樣的事情裸機例子是:

class ReportsController < ApplicationController 
    def show 
    @report = Report.find(params[:report_id]) 
    if @report.type == "special" 
     # This will render app/view/special_report.html.erb 
     render :special_report 
    else 
     # This will render app/view/report.html.erb 
     render :report 
    end 
    end 
end 

當然,還有比這多很多,look at the Rails guides for other options。注意我正在使用符號來指定視圖。你不必這樣做,字符串也可以,例如"report""special_report"

相關問題