2014-03-28 50 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我發佈了另一個答案,但請我建議你使用一個真實的例子使用值,因爲你沒有提供更多的信息,沒有人可以閱讀你的想法,所以請使用真實的信息 –

相關問題