[英]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.