2016-08-22 36 views
1

我想在這裏使用select_tag過濾漢字單詞列表。 我的想法是當用戶從下拉列表中選擇選項 - >自動提交表單 - >使用AJAX獲取search_by_lesson動作並將數據填充到#kanji_list。但我有2問題:「缺少此請求格式和變體的模板。」當試圖呈現AJAX響應

  1. 雖然我在form_tagremote: true,當我從下拉列表中選擇,瀏覽器仍然導航到一個新頁面http://localhost:3000/search_kanjis_by_lesson?lesson=1而不是停留在索引頁。
  2. 標題中的錯誤。雖然我希望這個search_by_lesson只能由ajax渲染,但我不想在文件夾中有單獨的search_by_lesson.html.erb

這裏是我的index.html.erb

<%= form_tag search_kanjis_by_lesson_path(lesson: params[:lesson]), method: :get, remote: true do |f| %> 
    <%= select_tag :lesson, options_for_select(@lessons), include_blank: true, onchange: "this.form.submit()" %> 
<% end %> 
<table class="ui celled padded striped table"> 
    <thead> 
     <tr> 
      <th>Kanji</th> 
      <th>Meaning</th> 
      <th>Lesson</th> 
     </tr> 
    </thead> 
    <tbody class="kanji_list"> 
     <%= render 'index' %> 
    </tbody> 
</table> 

我使用的部分來渲染列表_index.html.erb

<% @kanjis.each do |kanji| %> 
    <tr> 
     <td><%= kanji.word %></td> 
     <td><%= kanji.meaning %></td> 
     <td><%= kanji.lesson %></td> 
    </tr> 
<% end %> 

我得到這個在我的路線

resources :kanjis 

get '/search_kanjis_by_lesson', to: 'kanjis#search_by_lesson', as: :search_kanjis_by_lesson 

,並在我的kanjis_controllers。 rb

class KanjisController < ApplicationController 

    # ... other generic actions: edit, show ... 

    def index 
     @kanjis = Kanji.all 
     @lessons = [*1..32]  # @lessons is just an array of int. 
    end 

    def search_by_lesson 
     @kanjis = Kanji.find_by_lesson params[:lesson] 
    end 
end 

最後,我有一個search_by_lesson.js.erb

$("#kanji-list").html("<%= escape_javascript(render 'index') %>") 
+0

嘗試在控制器 –

回答

0

這應該爲你工作

在你index.html.erb

<%= form_tag search_kanjis_by_lesson_path, method: :get, remote: true do %> 
<%= select_tag :lesson, options_for_select(@lessons), include_blank: true %> 
<% end %> 

在您的應用程序.html.erb

$(document).ready(function(){ 
$('#lesson').change(function(){ 
    $('form').submit(); 
}); 
}); 

在你KanjisController

def search_by_lesson 
     @kanjis = Kanji.find_by_lesson params[:lesson] 
     respond_to do |format| 
     format.js 
     end 
    end 

在你search_by_lesson.js.erb

$(".kanji_list").html("<%= escape_javascript(render 'index') %>") 
+0

添加respond_to代碼塊現在我有另一個錯誤: 「的ActionController :: UnknownFormat」 在行'的respond_to做|格式|' – user3448806

+1

也檢查您的日誌,如果請求正在處理爲js或html –

+0

我編輯了我的答案。嘗試它應該工作的代碼 –

相關問題