2014-03-28 9 views
2

Итак, я видел несколько похожих сообщений, но ничего не нашел для Rails. Мой вопрос похож на: Keep a Select Box Selected after Submit, и ответ в порядке, что я хочу сделать, кроме как быть PHP.Желание сохранить выбранную опцию html после отправки и перезагрузки страницы

Все, что я хочу сделать, это то, что пользователь выбирает параметры фильтра и перезагружает последний выбранный вариант, который остается выбранным, вместо того, чтобы идти по умолчанию, который находится на данный момент. Я использую Rails, и у меня есть Ajax и jQuery как жизнеспособные варианты для этого. Прямо сейчас перезагрузка и фильтрация страницы работают, но я хочу, чтобы выбранная опция оставалась выбранной после перезагрузки. Я хотел сначала загрузить часть моего стола с информацией с Ajax, но я думаю, что это было бы над моей головой.

Моя таблица с вариантами (да, я знаю, что это грязный Я новичок в веб-приложений, так что если есть какие-либо несвязанные предложения, которые я скрываю):

<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> 

РНР Ответ: (я тоже не заботиться об этом, потому что он генерирует варианты).

<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

Престон, я дам вам очень простой пример выбора с использованием рельсов.

Таблица:

|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 я написал еще один ответ, но, пожалуйста, рекомендую вам использовать реальный пример, используя значения, потому что вы не даете больше информации и никому можете читать ваши мысли, поэтому, пожалуйста, используйте реальную информацию. –

Смежные вопросы