我正在使用Rails 6应用程序,并且想基于使用XHR选择的下拉值来更新页面视图。下拉列表必须使用GET方法,因为我正在调用索引操作。
我正在使用form_with
,默认情况下使用remote: true
。
我没有使用local: true
。
我尝试了onchange: "Rails.fire(this.form, 'submit')"
-这确实会发送XHR请求并收到响应,但不会更新视图。
我尝试了onchange: "this.form.submit();"
-不使用XHR进行整页重新加载。
来自app / views / users / index.html.erb的代码
<%= form_with url: station_users_path(station_id: Current.user.home_station), method: :get do |form| %>
<%= form.select :user_status, options_for_select( { "Active users" => "unlocked", "Inactive users" => "locked"}, @user_status ), {}, { :onchange => "Rails.fire(this.form, 'submit')" } %>
<% end %>
来自app / controllers / users_controller.rb的代码
def index
@user_status = params[:user_status] || "unlocked"
@users = @station.users.send(@user_status) || []
@user_status == "unlocked" ? seperate_managers_from_users : @managers = []
end
答案 0 :(得分:0)
在onchange中,只需编写一个get_station_users()
函数。在其中可以使用ajax调用。
在表单中
<%= form_with url: station_users_path(station_id: Current.user.home_station), id: “form_id”, method: :get do |form| %>
<%= form.select :user_status, options_for_select( { "Active users" => "unlocked", "Inactive users" => "locked"}, @user_status ), {}, { :onchange => "get_station_users()" } %>
<% end %>
添加脚本
function get_station_users(){
$.ajax({
type: "GET",
url: "/station_users",
data: { $('#form_id').serialize(), },
dataType: 'script'
});
}
您的回复将为JS.
,因此您可以使用index.js.erb