Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 我可以在ruby on rails应用程序中使用onchange事件处理程序在控制器中使用dropdown的值_Ruby On Rails_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 我可以在ruby on rails应用程序中使用onchange事件处理程序在控制器中使用dropdown的值

Ruby on rails 我可以在ruby on rails应用程序中使用onchange事件处理程序在控制器中使用dropdown的值,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,当用户更改下拉列表中的值时,我想使用onchange事件处理程序调用一个方法 <%= select_tag :name,options_for_select(@tests.map{|u| [u.name]}.uniq),:onchange => 'update_dropdown(:name)' %> 如何将视图中的选择值作为参数输入控制器? 我有一个mongoDatabase,其中documentsrow包含的键名为:name。我在键名下有4个唯一的值。我希望用户使用下拉菜单

当用户更改下拉列表中的值时,我想使用onchange事件处理程序调用一个方法

<%= select_tag :name,options_for_select(@tests.map{|u| [u.name]}.uniq),:onchange => 'update_dropdown(:name)' %>
如何将视图中的选择值作为参数输入控制器? 我有一个mongoDatabase,其中documentsrow包含的键名为:name。我在键名下有4个唯一的值。我希望用户使用下拉菜单选择值。当用户选择下拉菜单时。如果不进行页面刷新,则应显示包含使用键名选择的值的文档。 Ex:在key name下。对于200个文档,我有四个值。命名为: [value1、value2、value3、value4]。这些值是选项
用于下拉菜单。如果用户选择了任何值,则应显示包含键名值的文档。

在onchange事件上进行ajax调用所需的全部内容。下面是一个有用答案的链接

如何将视图中的选择值作为参数输入控制器

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

因为你没有很好地解释你的想法,我将解释如何使它工作的总体示意图

无国籍

HTTP生成Rails应用程序——这意味着每次向它发送交互时,它都必须重建用户环境,这就是为什么会话对Rails如此重要的原因

这意味着,每次要调用新的操作/方法时,都必须向服务器发送请求。请求可以通过多种协议HTTP、XML和WebSocket发送——每种协议都有相同的模式:请求>逻辑>输出

因此,如果要向控制器发送数据,必须按照上述模式进行完整页面刷新,或者通过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

他们是否有其他方法将视图下拉列表中的选择作为参数输入到控制器中?我想将值输入控制器中的name参数中。在update_dropdownname中。我希望name是选择中的选定值。无需在update_dropdownname中传递name参数。你可以用这个在更新_下拉方法中获得所选的值。很高兴在很长一段时间后见到你,兄弟。正如一直以来所解释的那样,我一直在从事一些紧张的项目,这些项目现在已经冷却了一些:p@RichPeck.Can我使用partials并将视图加载到其他视图中?示例:我有index.html.erb和_show.html.erb。_show.html.erb有在下拉列表中更改时应加载的内容。是否可以在index.html.erb中加载_show.html.erb的内容而不加载index.html.erb。这取决于是否要从后端提取数据。我正在将数据从后端提取到_show.html.erb页面,然后将其呈现为index.html.erb。
#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