Ruby on rails:一个视图中的多个控制器

时间:2017-05-26 09:07:51

标签: ruby-on-rails ruby model-view-controller controller

我正在创建问卷调查应用程序,允许用户创建调查问卷。

问卷由两个不同的控制者组成:

  • 问题
  • 内容(允许在问题之间标题将其分解)
然后我有一个' Questionnaire_Items'控制器,这是将问题和内容结合在一起的原因。这包含question_id或content_id以及订单值。

所以我需要我的questionnaire_item视图来提取问题数据或内容数据(取决于是否存在question_id或content_id)。

最好的方法是什么? 有没有更好的方法来实现我想要的目标?

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

我觉得你可能会认为这有点不对劲。见http://guides.rubyonrails.org/action_controller_overview.html#what-does-a-controller-do-questionmark;控制器接收请求并决定响应,因此控制器确定要渲染的视图,视图不会决定从哪个控制器“拉”。问题和内容是不是模型?

我能想到做你想做的最简单的方法是在你的控制器中建立一个问卷项目,然后渲染你的观点。

答案 1 :(得分:0)

您想要的是进行数据库查询。在您的控制器上尝试这样的事情:

例如

Content.find_by(id: anotherIdName)

和内容示例

Sub Normal_Return_Rate_fast()
Dim ws As Worksheet
Dim last_row As Long
Dim row As Long
Dim b_col As Integer
Dim arr As Variant
Dim res() As Double



Application.ScreenUpdating = False
start = Timer

Set ws = Workbooks("Book1.xlsm").Worksheets("Sheet1")
last_row = ws.Cells(Rows.Count, 1).End(xlUp).row
row = 2
b_col = 1

arr = Range("A2:A6000").Value
size_x = last_row - row + 1
ReDim res(size_x, 2) As Double
Dim i As Long
For i = 2 To UBound(arr, 1)
    res(i - 2, 0) = Round(arr(i, 1) / arr(i - 1, 1) - 1, 4)
    res(i - 2, 1) = Log(arr(i, 1) / arr(i - 1, 1))
Next i

Range("B3:C6000").Value = res

finish = Timer
total_time = Round(finish - start, 3)       ' Calculate total time.
MsgBox "This code ran successfully in " & total_time & " seconds", vbInformation
Application.ScreenUpdating = True

End Sub

您必须将问题和内容理解为类中的实例对象,然后,使用activeRecord中的方法find_by可以搜索数据库。