【发布时间】:2018-10-23 19:49:44
【问题描述】:
我正在尝试构建一个交互式搜索页面,如果对搜索表单进行了任何更改而不刷新页面,它会更新搜索结果。我可以在不刷新的情况下显示结果,但我更改任何内容后仍需要单击搜索按钮。
我的看法:
<div class="row">
<div class="col-md-2 col-md-offset-5">
<%= form_for(:search, url: search_path, remote: true) do |f| %>
<%= f.label :course_name %>
<%= f.text_field :course_name, class: 'form-control bottom_margin', onchange: f.submit %>
<%= f.label "Subject" %>
<%= collection_select(:search, :subject_id, Subject.all.order(:name), :subject_id, :name, :prompt => true, onchange: f.submit) %>
<%= f.submit "Search", class: "btn btn-primary top_margin" %>
<% end %>
</div>
</div>
<div id="result">
</div>
我的控制器:
class SearchController < ApplicationController
def new
end
def create
@course = search_params[:course_name]
@subject = search_params[:subject_id]
if @subject == ""
@searchResults = Course.all
else
@searchResults = Subject.find_by(subject_id: @subject).courses
end
@searchResults = @searchResults.where("name LIKE ?", "%#{@course}%")
respond_to do |search|
search.js {render layout: false}
end
end
private
def search_params
params.require(:search).permit(:course_name, :subject_id)
end
end
我的 JavaScript:
$("#result").html("<%= escape_javascript(render partial: 'search/create', locals: { searchResult: @searchResult } ) %>");
为什么更改不起作用?
【问题讨论】:
-
你有
@searchResults,但在视图中,它是@searchResult,错字?当你说不工作时,它有没有报错? -
@kasperite 感谢您发现这个错字。我没有收到任何错误消息。只是在我点击搜索按钮之前搜索结果不会更新。
标签: javascript html ruby-on-rails