我想在這裏使用select_tag過濾漢字單詞列表。 我的想法是當用戶從下拉列表中選擇選項 - >自動提交表單 - >使用AJAX獲取search_by_lesson
動作並將數據填充到#kanji_list。但我有2問題:「缺少此請求格式和變體的模板。」當試圖呈現AJAX響應
- 雖然我在
form_tag
有remote: true
,當我從下拉列表中選擇,瀏覽器仍然導航到一個新頁面http://localhost:3000/search_kanjis_by_lesson?lesson=1
而不是停留在索引頁。 - 標題中的錯誤。雖然我希望這個
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') %>")
嘗試在控制器 –