我有三个文件: 控制器:
def index
@filterrific = initialize_filterrific(
DimDictionary,
params[:filterrific],
select_options: {},
persistence_id: 'shared_key',
default_filter_params: {},
available_filters: [ :dictionary_word_filter ]
) || return
@dictionaries = @filterrific.find.limit(30)
respond_to do |format|
format.html
format.js
end
end
Index.html.haml
= form_for_filterrific @filterrific do |f|
.ui.form
.fields
.field
Filter Word
= f.text_field :dictionary_word_filter
= render_filterrific_spinner
= render(partial: '/test/list', locals: { dictionaries: @dictionaries })
Index.js.erb
<% alert("hi"); %>
<% console.log('working Mannnnn') %>
<% js = escape_javascript(render(partial: '/test/list', locals: { dictionaries: @dictionaries })) %>
$("#filterrific_results").html("<%= js %>");
Index.js.erb
没有被触发。每次页面加载时,其都应运行Index.js.erb
并显示警报和console.log并显示html吗?还是js.erb仅在ajax请求上触发?
我在这里使用filterrific gem
进行过滤,但是index.js.erb文件从未被触发。
即使我已经在我的控制器中包含js格式。应该怎么办?我在做错什么吗?
答案 0 :(得分:2)
每次加载页面时,其应运行Index.js.erb并显示 警报和console.log并显示html正确吗?
否,format.js
意味着,当客户想要JS时,您的控制器会返回JS作为响应。
例如,如果要使用JS进行响应,则应使用remote:true
。不可能同时渲染两者,因为控制器动作一次只能响应一个HTTP请求。
有关Rails响应的更多信息: https://api.rubyonrails.org/classes/ActionController/MimeResponds.html
关于Rails中的javascript: https://guides.rubyonrails.org/working_with_javascript_in_rails.html