Как загрузить результаты поиска по конкретному div на rails?

#ruby-on-rails #ajax

#ruby-on-rails #ajax

Вопрос:

Я разрабатываю проект rails, и мне нужно загрузить результаты поиска по конкретному div. Может кто-нибудь объяснить мне, как это сделать на rails 2.3.8?

Это моя модель событий

    create_table "events", :force => true do |t|
     t.string   "name"
     t.date     "start_at"
     t.date     "end_at"
     t.datetime "created_at"
     t.datetime "updated_at"
     t.string   "trainer_id"
     t.string   "venue_id"
     t.string   "description"
     t.boolean  "holy"
     t.integer  "nxt"
     t.string   "country_id"
  end
  

Это моя форма поиска

 <% form_tag "/events/find_trainer" do %>
  <%= collection_select("event", "trainer_id", @trainers , :id, :name, {:prompt => true}) %>
  <%= submit_tag "search" %>
  

Могут ли некоторые эксперты поделиться своими идеями по этому поводу?

Ответ №1:

Вы можете сделать это без формы, используя observe_field

  <%= collection_select("event", "trainer_id", @trainers , :id, :name, {:prompt => true}) %>
  <%= observe_field  "event_trainer_id", 
    :url => {:controller=> :events, :action =>  :find_trainer},
    :on=>"change",
    :with => "'value=' document.getElementById('event_trainer_id').value"
  %>
  <div id="some_id"></div>
  

Код контроллера

 def find_trainer
  #Get your Search Results in the @search_results
  #you get search value in params[:value]
  render :update do |page|
    page.replace_html 'some_id' , :partial => "some_partial", :object => [@search_results] #now you can use object @search_results in events/_some_partial.html.erb
  end
end