[英]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如此重要的原因)。
这意味着每次您要调用新的操作/方法时,都必须向服务器发送请求 。 可以通过多种协议( HTTP
, XML
和Websockets
)发送请求-每个协议具有相同的模式: 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.