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
我知道控制器中的每个不同功能都可以有一个视图,现在我将此报告链接到报告视图。我需要为该项目添加报告视图。
如何根据@reportType变量显示不同的视图? 我需要添加到控制器中的内容?我应该如何命名添加的报告视图?
答案 0 :(得分:2)
您可以查看@report_type
report.html.erb
例如: 在 report.html.erb
中<% if @report_type == "this" %>
<%= render partial: "this" %>
<% elsif @report_type == "that" %>
<%= render partial: "that" %>
<% end %>
这里你将有两个部分,如
_this.html.erb 和 _that.html.erb
通过这种方式,您可以根据报告类型拥有适当页面的多个视图。
答案 1 :(得分:1)
在控制器中,您可以使用if condition
呈现不同的页面例如:
if [condition] render "abc" else render "xyz" end
答案 2 :(得分: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"
。
答案 3 :(得分: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 %>