簡體   English   中英

Rails AJAX-獲取下拉列表以填充表格

[英]Rails AJAX - getting a dropdown selection to populate a table

我正在嘗試從下拉列表中進行選擇,以使用AJAX填充同一頁面中的表,以便在不刷新頁面的情況下顯示更改。 我已經為遠程調用制定了代碼,並向控制器添加了自定義操作,但是我不知道如何將返回的信息放入到我的表中。 目前,該表只是在所有項目中循環,但是我希望它僅顯示所選一個項目的信息。

我需要在JS(rjs?)文件中編寫什么文件才能處理返回的信息,我需要對現有表進行哪些更改以確保其顯示正確的信息?

下拉菜單(使用AJAX調用):

<%= collection_select :id, Project.all, :id, :name, :onchange => remote_function(:url=>{:action => 'populate_projects'}) %>

控制器動作:

 def populate_projects
    @project = Project.find(params[:id])
 end

和現有表:

<table>
  <tr>
    <th>Name</th>
    <th>Category</th>
    <th>Budget</th>
    <th>Deadline</th>
    <th>Company ID</th>
    <th></th>
    <th></th>
    <th></th>
  </tr>

<% @projects.each do |project| %>
  <tr>
    <td><%= project.name %></td>
    <td><%= project.category %></td>
    <td><%= number_to_currency(project.budget, :unit => "&pound;") %></td>
    <td><%= project.deadline.strftime("%A, %d %B %Y") %></td>
    <td><%= project.company_id %></td>
    <td><%= link_to 'More', project %></td>
    <td><%= link_to 'Edit', edit_project_path(project) %></td>
    <td><%= link_to 'Delete', project, confirm: 'Are you sure?', method: :delete %></td>
  </tr>
<% end %>
</table>

假設您正在使用jQuery

<%= collection_select :project, :id, Project.all, :id, :name, {}, {:onchange => '$.get("/populate_projects")'} %>

然后在您的控制器中

def populate_projects
  @project = Project.find(params[:id])
  respond_to do |format|
    ...
    format.js { render 'populate_projects', :formats => [:js] }
    ...
  end
end

最后,創建populate_projects.js.erb並編寫任何更改表內容腳本。 該腳本中可以使用@project

創建一個部分_project.html.erb並在索引頁面中呈現此部分。 <%= render @projects %>在更改項目時,僅使用項目對象渲染部分內容,並使用rjs更新頁面。

在js(RJS)文件中,您需要調用部分HTML文件,並且該文件具有您在問題中此處顯示的表。

我希望這可以幫助你。

謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM