我正在做一个在线法官应用程序,所以我有一个用户模型、一个问题模型和一个解决方案模型来建立多对多关系。在那个解决方案模型中,我有一个名为“状态”的额外列,我计划在其中存储某个用户的问题状态:已解决,错误的答案,未解决。
我正在尝试修改问题控制器中的索引操作,以在问题列表中呈现问题的状态(这样用户就可以看到他是否解决了问题,就像我之前所说的那样)。不过,当我访问视图时,我遇到了“未初始化的常量 Admin::ProblemsController::Solution”错误。
我对 RoR 真的很陌生,到目前为止我的经验非常苛刻,所以我会很感激任何线索。这是控制器和视图中的代码:
问题控制器.rb
def index
@problems = Problem.all
if current_user
@solutions = Solution.includes(:problem).where(:user_id => current_user.id)
end
respond_to do |format|
format.html # index.html.erb
format.json { render json: @problems }
end
end
意见/问题/index.html.erb
<% @problems.each do |problem| %>
<tr>
<td><%= problem.name %></td>
<td><%= problem.code %></td>
<td><%= problem.description %></td>
<% if current_user %>
<%= for solution in @solutions do %>
<% if solution %>
<td><%= solution.state%></td>
<% else %>
<td>Not Solved</td>
<% end %>
<% end %>
<% end %>
<td><%= link_to 'Show', problem %></td>
<% if current_user && current_user.is_admin? %>
<td><%= link_to 'Edit', edit_problem_path(problem) %></td>
<td><%= link_to 'Delete', problem, method: :delete, data: { confirm: 'Are you sure?' } %></td>
<% end %>
</tr>
<% end %>
我不确定这是否是我应该访问解决方案表的最佳方式,或者我是否应该在另一个控制器中执行此操作(在用户控制器中?也许在解决方案控制器文件中?)。
我想清楚如何使用那个“解决方案”连接表。我之前有一个 has_and_belongs_to_many 并因为额外的列而改变了它。我已经阅读了很多关于多对多关系的内容,但对于这种情况我无法理解 =(