簡體   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