所以我见过一些类似的帖子,但没有我能找到的Rails。 我的问题类似于:Keep a Select Box Selected after Submit和答案是我想要做的除了作为PHP。想要在提交和页面重新加载后保留选定的html选项
我想要做的就是在用户选择过滤器选项并重新加载上次选择的选项后保持选中状态,而不是进入目前默认的状态。我正在使用Rails,并且我有Ajax和jQuery作为可行选项来执行此操作。现在页面重新加载和过滤所有的作品,但我只想要选择的选项在重新加载后保持选择。刚开始时我正在用Ajax的信息重新加载我的表中的一部分,但我认为这将超过我的头。
我与选项(是的,我知道这是凌乱我是新来的Web应用程序,所以如果有任何不相关的建议,我愿意)表:
<html>
<table class= "table table-bordered"%>
<thead>
<tr>
<th>Status:</th>
<th>Clec ID:</th>
<th>Task ID:</th>
<th>Task Type:</th>
<th>Hostname:</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<form action="/task_queues" method="GET">
<td>
<select name="by_status">
<option value="">All</option>
<option value="Completed">Completed</option>
<option value="Pending">Pending</option>
<option value="Failed">Failed</option>
</select>
</td>
<td>
<select name="by_clecid">
<option value="">All</option>
<% @clecids.each do |clecid| %><option value="<%= clecid %>"><%= clecid %></option><% end %>
</select>
</td>
<td>
<select name="by_taskid">
<option value="">All</option>
<% @taskids.each do |taskid| %><option value="<%= taskid %>"><%= taskid %></option><% end %>
</select>
</td>
<td>
<select name="by_tasktype">
<option value="">All</option>
<% @tasktypes.each do |tasktype| %><option value="<%= tasktype %>"><%= tasktype %></option><% end %>
</select>
</td>
<td>
<select name="by_hostname">
<option value="">All</option>
<% @hostnames.each do |hostname| %><option value="<%= hostname %>"><%= hostname %></option><% end %>
</select>
</td>
<td><input type="submit"/>
</td>
</form>
</tr>
</tbody>
</table>
PHP的答案:(我也不要关心这一点,因为他生成的选项)。
<select name="test">
<?php
$options = array(1 => 'Option 1', 2 => 'Option 2', 3 => 'Option 3');
foreach ($options as $key => $value) {
echo '<option value="' . $key . '"' . ($key == $_GET["test"] ? ' selected="selected"' : '') . '>' . $value . '</option>';
} ?>
</select>
我也怀疑你们需要看到这一点,但这里是一些控制的,希望能够让你们让我混乱的一些感觉:
class TaskQueuesController < ApplicationController
before_action :set_task_queue, only: [:show, :edit, :update, :destroy]
has_scope :by_status, :by_tasktype, :by_taskid, :by_hostname, :by_clecid
def index
@task_queues = apply_scopes(TaskQueue).all
@task_queues = @task_queues.paginate(:page => params[:page], :per_page => 30)
@clecids = TaskQueue.uniq.pluck(:clecid).sort
@taskids = TaskQueue.uniq.pluck(:taskid).sort
@tasktypes = TaskQueue.uniq.pluck(:tasktype).sort
@hostnames = TaskQueue.uniq.pluck(:hostname).reject!(&:blank?)
end
任何帮助将不胜感激!
试试我编辑过的代码并让我知道。 –