我正在尋找一個下拉式的Rails示例ruby,它將改變一堆輸入字段。總之,我有三個人,你可以是......你從一個下拉列表中選擇這個,對於這三個人中的每一個人,他們都有五個自己的問題。Rails - 下拉菜單改變多個輸入字段?
你知道有什麼樣的例子可以學習嗎?
我正在尋找一個下拉式的Rails示例ruby,它將改變一堆輸入字段。總之,我有三個人,你可以是......你從一個下拉列表中選擇這個,對於這三個人中的每一個人,他們都有五個自己的問題。Rails - 下拉菜單改變多個輸入字段?
你知道有什麼樣的例子可以學習嗎?
這是我設想的方式。在您看來:
<%= select_tag :person_id,
options_from_collection_for_select(Person.all, "id", "name", person_to_prepopulate_select_with),
:id => "person_selector_for_questions" %>
這會創建您的下拉菜單。我假設你有一個Person
模型,並且這個模型是一個Person
has_many
Question
s。
在JavaScript:
$("#person_selector_for_questions").change(function(e) {
var $dropdown = $(this);
$.get('/questions?person_id=' + $dropdown.val(), function(data) {
$dropdown.after(data);
});
});
這(1)觸發,當用戶改變下拉的值一個jQuery事件處理程序,(2)觸發一個AJAX GET請求到http://yoursite/questions?person_id=selected_person_id
,和(3)支使用.after
在下拉菜單中輸入當前頁面的響應。你當然可以定製你的jQuery調用,把它放在你需要的頁面中。
現在是重要的部分。在您的QuestionsController
:
def index
if request.xhr? && params[:person_id]
@questions = Question.where(:person_id => params[:person_id]
render :person_questions
return # important to prevent rest of controller action from firing
end
end
這個素數的index
行動應對AJAX調用包含在他們的查詢字符串person_ids。它會從與控制器相對應的視圖文件夾(本例中爲questions
文件夾)中啓動部分名爲person_questions
,該文件夾將包含您想要插入網頁的信息。
最後,您必須在您的app/views/questions
文件夾中創建這個部分,_person_questions.html.erb
。這部分內容將包含jQuery將在您的頁面中保留的內容。你可以,例如,把這個部分:
<% @questions.each do |q| %>
<%= q.contents %>
<% end %>
因此,問題的內容,或者其他任何你的心臟的慾望被放置在頁面上,加載到當前頁面。
現在嘗試一下,但這樣做更有意義!謝謝@Vardarc – nathanielelliott 2014-08-27 18:40:45
順便說一句,完美的工作!非常感謝你......現在我們正在用JS代替原來的代碼。這很有幫助。 – nathanielelliott 2014-09-02 02:38:03
只是爲了澄清:您是否從下拉列表中選擇,提交併返回基於用戶選擇的唯一問題集的回覆? – Vardarac 2014-08-27 16:29:06
@Vardarac - 首先,感謝您的關注!其次,我的目標是在用戶選擇後在同一頁面上返回響應(五個輸入),而無需提交。 – nathanielelliott 2014-08-27 16:40:10
這可能只使用Rails助手是可行的,但如果你知道並且使用jQuery,它可能會更容易。你的偏好是什麼? – Vardarac 2014-08-27 16:53:51