2014-03-28 28 views
2

所以我见过一些类似的帖子,但没有我能找到的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 

任何帮助将不胜感激!

回答

1

好普雷斯顿根据您的代码我添加了栏杆代码。

<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> 
    </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_tag "by_clecid","<option value=\"0\">All</option>"+options_for_select(@clecids.collect {|t| [t.clecid.to_s,t.clecid]}, params[:by_clecid] ) %> 
      </td> 
      <td> 
       <%= select_tag "by_taskid","<option value=\"0\">All</option>"+options_for_select(@taskids.collect {|t| [t.taskid.to_s,t.taskid]}, params[:by_taskid] ) %> 
      </td> 
      <td> 
       <%= select_tag "by_tasktype","<option value=\"0\">All</option>"+options_for_select(@tasktypes.collect {|t| [t.tasktype.to_s,t.tasktype]}, params[:by_tasktype] ) %> 
      </td> 
      <td> 
       <%= select_tag "by_hostname","<option value=\"0\">All</option>"+options_for_select(@hostnames.collect {|t| [t.hostname.to_s,t.hostname]}, params[:by_hostname] ) %> 
      </td> 
      <td> <input type="submit"/></td> 
     </form> 
     </tr> 
    </tbody> 
</table> 

那么我建议你请看看这个例子,因为我没有什么是你想通过strins或整数想法写在你的组合框的值。

http://jsfiddle.net/ashwyn/yL6w3/1/ 

如有的代码没有工作写你要我送你与实际值的链接什么讨好

+0

试试我编辑过的代码并让我知道。 –

0

普雷斯顿,我会给你一个非常简单的选择使用rails的例子。

表:

|people| 
    |id| |name| |phone 
    1 ABC 13245 
    2 DEF 67891 

控制器:

def index 
    @people = Person.all 
end 

查看:

<% form_tag :controller=>"person",:action=>"index" do %> 
    <%= select_tag "people",options_for_select(@people.collect {|t| [t.name.to_s,t.id]},params[:people]) %> 
    <%= submit_tag "Search", :name => nil %> 
<% end %> 

和如果您使用尝试通过数字,您可以使用此:

<% form_tag :controller=>"person",:action=>"index" do %> 
    <%= select_tag "phone",options_for_select(@people.collect {|t| [t.phone.to_s,t.id]},params[:phone].to_i) %> 
    <%= submit_tag "Search", :name => nil %> 
<% end %> 

但是,您使用的是HTML代码尝试使用此代码与rails代码

+0

我不知道的轨道的方式产生选择。但是,这将如何帮助?对不起,如果我错过了显而易见的,但这不只是生成HTML代码? (我在说什么:http://guides.rubyonrails.org/form_helpers.html) –

+0

Okey我发布了另一个答案,但请我建议你使用一个真实的例子使用值,因为你没有提供更多的信息,没有人可以阅读你的想法,所以请使用真实的信息 –

相关问题