我有三个文件:控制器:
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
endIndex.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格式。应该是什么样子?我做错什么了吗?
发布于 2019-01-30 09:02:40
每次页面加载时,它都应该运行Index.js.erb并显示警报、console.log和显示html,对吗?
不,format.js的意思是,当客户机想要JS时,控制器返回JS作为响应。
例如,如果您想在responnse中使用JS,就应该使用remote:true。不可能同时呈现两者,因为控制器操作一次只能响应一个HTTP请求。
Rails中有关响应的更多信息:https://api.rubyonrails.org/classes/ActionController/MimeResponds.html
关于Rails中的javascript:rails.html
https://stackoverflow.com/questions/54436435
复制相似问题