背景
我正在构建一个基本任务管理应用程序(以更好地理解Rails),您可以在其中输入任务的名称/描述并指出其优先级(通过说明它是否重要和/或紧急) 。基于重要性和紧迫性,我将其放入特定的象限/列表中。
当用户转到<ProgressBar...
时,我想:
这是/tasks/index
:
/controllers/tasks_controller.rb
我想在class TasksController < ApplicationController
def index
@tasks = Task.where(user_id: @user_id)
end
end
中附加每个任务的表使用以下结构和命名约定:
/views/tasks/index.html.erb
这里是@tasks部分(即<table>
<tbody id="quadrant-X"> <!-- where 'X' is an integer, 1-4 -->
<% @tasks.each do |task| %>
<% render @tasks %>
<% end %>
</tbody>
</table>
):
/views/tasks/_task.html.erb
问题
答案 0 :(得分:1)
您可以将整个表格包含在部分内容中,并将其渲染到您的每个表格的视图(app/views/tasks/index.html.erb
)中。
app/views/tasks/_task.html.erb
的示例:
<table>
<tbody id="quadrant-<%= priority %>">
<% @tasks.each do |task| %>
<% if task.priority == priority %>
<tr>
<td><%= task.description %></td>
</tr>
<% end %>
<% end %>
</tbody>
</table>
app/views/tasks/index.html.erb
的示例:
<h2>Priority 1</h2>
<%= render 'task', priority: 1 %>
<h2>Priority 2</h2>
<%= render 'task', priority: 2 %>
<h2>Priority 3</h2>
<%= render 'task', priority: 3 %>
<h2>Priority 4</h2>
<%= render 'task', priority: 4 %>
这样您就可以灵活地将每个列表放在视图中的任何位置,但这会带来成本,因为您将迭代任务列表4次(每个优先级为1)。
虽然您可以解决此问题,但如果将迭代移出部分并将其包含在视图中,则在脚本中插入正确的表(象限)上的每一行。
使用JQuery修改app/views/tasks/index.html.erb
:
<h2>Priority 1</h2>
<%= render 'task', priority: 1 %>
<h2>Priority 2</h2>
<%= render 'task', priority: 2 %>
<h2>Priority 3</h2>
<%= render 'task', priority: 3 %>
<h2>Priority 4</h2>
<%= render 'task', priority: 4 %>
<script type="text/javascript">
<% @tasks.each do |task| %>
$('#quadrant-<%= task.priority %>').append('<tr><td><%= task.description %></td></tr>');
<% end %>
</script>
只需用您的变量替换硬编码的优先级数字(1..4),这至少应该指向正确的方向。