Ruby on rails Rails AJAX—获取下拉选择以填充表

Ruby on rails Rails AJAX—获取下拉选择以填充表,ruby-on-rails,ajax,drop-down-menu,html-table,populate,Ruby On Rails,Ajax,Drop Down Menu,Html Table,Populate,我试图从下拉列表中选择一个选项,使用AJAX在同一页面中填充一个表,以便在不刷新页面的情况下显示更改。我已经为远程调用编写了代码,并将自定义操作添加到控制器中,但我不知道如何将返回的信息获取到我得到的表中。目前,该表只是在所有项目中循环,但我希望它只显示所选项目的信息 我需要在JS(rjs?)文件中写入什么以使其处理返回的信息,以及需要对现有表进行哪些更改以确保它显示正确的信息 下拉列表(使用AJAX调用): 以及现有表格: <table> <tr> <

我试图从下拉列表中选择一个选项,使用AJAX在同一页面中填充一个表,以便在不刷新页面的情况下显示更改。我已经为远程调用编写了代码,并将自定义操作添加到控制器中,但我不知道如何将返回的信息获取到我得到的表中。目前,该表只是在所有项目中循环,但我希望它只显示所选项目的信息

我需要在JS(rjs?)文件中写入什么以使其处理返回的信息,以及需要对现有表进行哪些更改以确保它显示正确的信息

下拉列表(使用AJAX调用):

以及现有表格:

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

名称
类别
预算
最后期限
公司ID
“£;”)”>

创建一个分部
\u project.html.erb
并在索引页中呈现该分部。

更改项目时,只需使用项目对象呈现部分,并使用rjs更新页面。

创建一个部分
\u project.html.erb
,并在索引页面中呈现该部分。
更改项目时,只需使用项目对象呈现部分内容,并使用rjs更新页面。

在js(rjs)文件中,您需要调用部分HTML文件,该文件包含您在问题中显示的表格

我希望这对你有帮助

谢谢

在js(RJS)文件中,您需要调用部分HTML文件,该文件中有您在问题中显示的表

我希望这对你有帮助


谢谢

假设您使用的是jquery

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

最后,创建
填充_projects.js.erb
并编写任何更改表内容脚本<代码>@project在该脚本中可用。

假设您使用的是jquery

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

最后,创建
填充_projects.js.erb
并编写任何更改表内容脚本
@project
在该脚本中可用。

目前,我收到一个错误,上面写着:未定义的方法'remote\u function'-知道为什么吗?当下拉列表的值更改时,我还可以如何进行远程ajax调用?谢谢啊,我刚刚查了一下-rails 3中的remote_功能被取消了-否则我怎么能实现同样的功能呢!?只需使用jquery onchange事件在响应时发送ajax请求,只需设置html.on rails操作
format.js{render:partial=>@project}
就可以根据您目前可以浏览的项目列出任务,我收到一个错误:未定义的方法“remote_function”-知道为什么吗?当下拉列表的值更改时,我还可以如何进行远程ajax调用?谢谢啊,我刚刚查了一下-rails 3中的remote_功能被取消了-否则我怎么能实现同样的功能呢!?只需使用jqueryonchange事件在响应时发送ajax请求,只需设置html.on-rails操作
format.js{render:partial=>@project}
对于基于项目的任务列表,您可以浏览,但不幸的是,它不在表单中-它是索引视图中的一个独立下拉框-我如何在不必在表单中或提交按钮的情况下使其工作?对不起,我对rails还很陌生,所以你可能得给我解释清楚!谢谢最终,我试图实现的是让下拉菜单显示所有当前项目的列表,以便用户可以单击“选择项目”,并将项目id放入会话中,以便在以下页面上仅显示与该项目相关的任务等。那么,我可以创建一个表单,当它提交时调用一个自定义操作,将下拉列表中所选项目的id放入会话中吗?如果你能告诉我怎么做,那就太好了!我已经有一个名为select_project的自定义操作,但似乎无法将其链接到下拉列表。不幸的是,它不是一个表单-它是索引视图中的一个独立下拉框-如何在不必将其包含在表单或提交按钮的情况下使其工作?对不起,我对rails还很陌生,所以你可能得给我解释清楚!谢谢最终,我试图实现的是让下拉菜单显示所有当前项目的列表,以便用户可以单击“选择项目”,并将项目id放入会话中,以便在以下页面上仅显示与该项目相关的任务等。那么,我可以创建一个表单,当它提交时调用一个自定义操作,将下拉列表中所选项目的id放入会话中吗?如果你能告诉我怎么做,那就太好了!我已经有一个名为select_project的自定义操作,但似乎无法将其链接到下拉列表。
<%= 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