0

我是 Ruby 的新手。我必须渲染数据库结构,使用教程我找到了合适的代码:

文件 index.html.erb:

<h1>Listing tasks</h1>

<table>
  <tr>
    <th>Title</th>
    <th>Content</th>
    <th>Date From</th>
    <th>Date To</th>
    <th></th>
    <th></th>
    <th></th>
  </tr>

<% @tasks.each do |task| %>
  <tr>
    <td><%= task.title %></td>
    <td><%= task.content %></td>
    <td><%= task.datefrom %></td>
    <td><%= task.dateto %></td>
    <td><%= link_to 'Show', task %></td>
    <td><%= link_to 'Edit', edit_task_path(task) %></td>
    <td><%= link_to 'Destroy', task, :method => :delete, :data => { :confirm => 'Are you sure?' } %></td>
  </tr>
<% end %>
</table>

<br />

<%= link_to 'New Task', new_task_path %>

现在我想按“日期来源”值对任务进行分组,这可能意味着在 index.html.erb 中我应该只打印日期,然后单击日期我应该调用另一个 html 文件,该文件将按所选日期呈现任务。

这可以像

文件 index.html.erb:

<h1>Listing dates</h1>

<table>
  <tr>
    <th>Date From</th>

<% @tasks.each do |task| %>
  <tr>
    <td><%= !!! IF DATE NOT PRINTED THEN PTINT IT task.datefrom %></td>
    <td><%= link_to 'Edit', edit_date_path(task, date) %></td>
  </tr>
<% end %>
</table>

<br />

<%= link_to 'New Task', new_task_path %>

在哪里 edit_date_path(task, date) 应该让我参考 index_date.html.erb,我可以在其中获取选定的日期并根据选定的日期打印任务。

也许我可以得到建议,如果有人可以帮助我,这会容易得多,因为任务应该不是很困难,但否则我会浪费很多时间在谷歌上搜索。

谢谢,乌玛斯。

编辑问题。

这有点帮助。我现在所做的,我将 index.html.erb 更改为

 <h1>Listing dates</h1>

<table>
  <tr>
    <th>Date To</th>
    <th></th>
  </tr>

<% dates = Array.new %>
<% @tasks.each do |task| %>

<% if ( !dates.include?(task.dateto.strftime("%m.%d.%Y")) ) then
    dates.push task.dateto.strftime("%m.%d.%Y")
%>

  <tr>
    <td><%= task.datefrom.strftime("%m.%d.%Y") %></td>
    <td><%= link_to 'Show Date',  {:action => "index", :date => task.dateto}   %></td> <-- This does not work
  </tr>

<%
   end
%>

<% end %>
</table>

<br />

<%= link_to 'New Task', new_task_path %>

应将“显示日期”链接链接到 show_date.html.erb,其中是在输入日期通过时显示记录的正确代码。

我在控制器中也添加了方法

def show_date
    @tasks = Task.find(params[:dateto])
    @dateto = :dateto

    respond_to do |format|
      format.html # showdate.html.erb
      format.json { render :json => @tasks }
    end
 end 

可以在不工作的链接中使用,将数据传递给“显示日期”(show_date.html.erb),但我总是出错。问题在于正确取消show_date.html.erb,我将能够自己编写代码:)

乌尔马斯

4

2 回答 2

0

找到了解决方案。

有必要添加到 routes.rb

resources :tasks do
  member do
    get 'showdate'
  end
  get "home/index"
end

添加相应的控制器处理

def showdate
  @task = Task.find(params[:id])
  @tasks = Task.find(:all)

  respond_to do |format|
    format.html # showdate.html.erb
    format.json { render :json => @tasks }
  end
end 

并使用 (index.html.erb) 调用它

<td><%= link_to 'Show Date', showdate_path(task.id)  %></td>

所有进一步的处理已经在 showdate.html.erb 中。

希望这可以帮助某人。

我是最好的!!!!xD

于 2012-08-03T07:13:42.320 回答
0

在任务控制器中:

添加方法

def index_date

@tasks = Task.all

end

并创建一个 index_date.html.erb 写入

<% @tasks.each do |task| %>   
<tr>     <td><%= task.datefrom %></td>
          <td><%= link_to 'Edit', {:action => "index", :date => task.datefrom} %></td>
</tr>
<%end%>

并在控制器中的 index 方法中更改

@tasks = Task.all

@tasks = Task.find_all_by_datefrom(#{params[:date])

这将列出与所选日期匹配的任务,并且此后的所有内容都将与现在相似。

于 2012-08-02T16:30:26.610 回答