导轨AJAX - 获得一个下拉选择填充表(Rails AJAX - getting a dropd

2019-06-26 01:20发布

我试图从下拉得到一个选择填充表在同一个页面,使用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>

Answer 1:

假设你正在使用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是在脚本中可用。



Answer 2:

创建一个部分_project.html.erb并呈现在索引页这个部分。 <%= render @projects %>论项目的变化只呈现局部与项目对象并使用RJS更新页面。



Answer 3:

在JS(RJS)文件,你需要调用部分HTML文件,该文件有你在你的问题在这里显示表。

我希望这可以帮助你。

谢谢。



文章来源: Rails AJAX - getting a dropdown selection to populate a table