1

我是 web 开发的新手,我目前正在为 Rails 开发一个简单的项目。现在,我有一个数据库,其中的条目都有一个条目日期,我有一个索引页面,显示本周的所有条目,效果很好。

下一步是实现一个方法让用户选择一周(当前使用 jQuery UI 日期选择器)然后单击一个按钮,该按钮会自动刷新索引页面上的部分以显示该周的条目。

这是我到目前为止所拥有的:

在 /app/views/reports/index.html.erb

<script>$(function() {
  $("#datepicker").datepicker();
  $("#datepicker").val($.datepicker.formatDate('mm/dd/yy', new Date()));
});</script>
<% require 'date' %>
<h1>Listing reports</h1>

<input type="datetime" id="datepicker" /> <%= button_to "Select Date", :action =>     'showEntries', :remote => 'true' %>

<div id="displayReports">
<%= render 'display', :date => Date.today %>
</div>

<br />

<%= link_to 'New Report', new_report_path %>
<%= link_to 'Send Weekly Email', weekly_email_reports_path %>

在 /app/views/reports/_display.html.erb

<% require 'date' %>
<table>
  <tr>
   <th>App</th>
    <th>Week</th>
    <th>Completed</th>
    <th>Planned</th>
    <th>Releases</th>
    <th></th>
    <th></th>
    <th></th>
  </tr>

<% @reports.each do |report| %>
<% if report.entrydate.strftime('%U') == date.strftime('%U') %>
  <tr>
    <td><%= report.app %></td>
    <td><%= report.entrydate %></td>
    <td><%= report.completed %></td>
    <td><%= report.planned %></td>
    <td><%= report.releases %></td>
    <td><%= link_to 'Show', report %></td>
    <td><%= link_to 'Edit', edit_report_path(report) %></td>
    <td><%= link_to 'Destroy', report, :method => :delete, :data => { :confirm => 'Are you sure?' } %></td>
  </tr>
<% end %>
<% end %>
</table>

在 /app/controllers/reports/showEntries.js.erb

var selectDate = $("#datepicker").val();
$("#displayReports").html("<%= escape_javascript(render(:partial => 'display', :locals => { :date => " + selectDate + " })).html_safe %>");

在 /config/routes.rb

Summary::Application.routes.draw do
  resources :reports do
    collection do
      get 'weekly_email'
      post 'showEntries'
    end
  end

  get "home/index"
end

当我尝试运行该页面时,出现错误:

No route matches {:action=>"showEntries", :remote=>"true", :controller=>"reports"}

很多类似于这个问题的问题并没有真正帮助我。如果你能指出我做错了什么或者一个网站可以阅读 Rails AJAX 调用,那就太好了。谢谢。<3

4

1 回答 1

0

您应该将动作 showEntries 的名称更改为 show_entries。我猜你的控制器中有一个动作 show_entries 并且在路由中拼错了它。

于 2012-11-15T23:43:22.853 回答