繁体   English   中英

它们可以吗?我可以在Rails应用程序的ruby中使用onchange事件处理程序来获取下拉列表的值以在控制器中使用

[英]Is their any way?I could get the value of dropdown to use in controller using onchange event handler in ruby on rails application

当用户更改下拉列表中的值时,我想使用onchange事件处理程序调用方法。以下是我的下拉框的代码。

<%= select_tag :name,options_for_select(@tests.map{|u| [u.name]}.uniq),:onchange => 'update_dropdown(:name)' %>

在控制器中,我想要一个method.method。它将下拉列表中的selection值作为参数:
下面的代码使用视图中给出的参数值在数据库中搜索文档,然后返回文档。随着下拉列表值的更改,我需要进行哪些更改才能在控制器中进行选择!

def update_dropdown(name)
    @drop = Test.where("name" => name)
end

如何从视图中将选择值作为参数获取到控制器中?
我有以下的重要文件(行)一个名为mongoDatabase: 名字 。我有下。我想用dropdown.As用户选择的dropdown.Without页面刷新由值与选定的文件用户选择值 4个唯一值密钥名称应显示。
例如:在键名下 。我有200个文档的四个值。
[“ value1”,“ value2”,“ value3”,“ value4”]。这些值为选项
如果用户选择了任何值,则应显示包含键值的文档。

您需要在onchange事件上进行ajax调用。 这是一个有用的答案的链接stackoverflow.com/a/7952315/4136098

如何从视图中将选择值作为参数获取到控制器中

唯一的方法是通过HTTP或Ajax(XML)请求发送数据。

因为您没有很好地解释user story ,所以我将解释有关如何使其工作的总体示意图...


无状态

HTTP使Rails应用程序变为无状态 -意味着每次向其发送交互时,它都必须每次都重建用户环境(这就是sessions对Rails如此重要的原因)。

这意味着每次您要调用新的操作/方法时,都必须向服务器发送请求 可以通过多种协议( HTTPXMLWebsockets )发送请求-每个协议具有相同的模式: Request > Logic > Output

因此,如果要将数据发送到控制器,则必须刷新整个页面(遵循上述模式),或者通过ajax发送数据。


阿贾克斯

在这种情况下,我建议使用ajax将请求发送到您的控制器。

# View
<%= select_tag :name,options_for_select(@tests.map{|u| [u.name]}.uniq), id: "select" %>

#app/assets/javascripts/application.js
$(document).on("change", "#select", function(e) {
   $.get("/controller/update_dropdown", {id: $(this).val() }, function(data) {
      # Do something here
   });
});

这将允许您使用以下内容:

#config/routes.rb
resources :controller do
   get :update_dropdown, on: :collection #-> url.com/controller/update_dropdown
end

#app/controllers/controller_controller.rb
class ControllerController < ApplicationController
   def update_dropdown
      # params[:id] will be available
      @test = Test.find params[:id]
      render json: @test.to_json
   end
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM