gpt4 book ai didi

ruby-on-rails-3 - Ruby on Rails呈现具有动态内容和部分内容的表

转载 作者:行者123 更新时间:2023-12-04 06:51:44 25 4
gpt4 key购买 nike

我已经在这个网站上使用了很多次才能找到答案,但是很遗憾,我现在遇到了麻烦,需要一些帮助。在我的主要内容页面上,我正在处理使用CSS和div ID创建表的问题。

总览

该表格分为2行和6列,然后溢出到12个框中,每个框200px X 200px。现在,每个框的内容都包含一个新项目(@books),该项目是从一个单独的控制器生成的(使用内置的generate scaffold命令)。我还使用分页来限制页面(12)上的项目,因此较旧的项目只能回滚。

问题

通过在控制器上使用以下代码,我可以用新内容填充12个框中的每个框并查看

控制者

def content
@books= Book.paginate(:page => params[:page], :per_page => 12)
respond_to do |format|
format.html # content.html.erb
end


查看{content.html.erb}

<% @books.each do |book| %>
<div id="column1">
<tr>
<td><%= book.name %></td>
<td><%= book.title %></td>
<td><%= book.content %></td>
<td><%= link_to 'Show', book %></td>
</tr>
</div>
<% end %>
<br />
<div id="paginate">
<%= will_paginate(@books,
) %)
</div>
</div>


当我生成视图时会发生什么,就是所有东西都呈现完美,但是我所有的书都使用相同的“第1列”

     <div id="column1">
<tr>
<td>Title</td>
<td>Name</td>
<td>Content</td>

<td><a href="/books/4d376fc63060da4abc000002">Show</a></td>
</tr>
</div>
<div id="column1">
<tr>
<td>Title </td>
<td>Name</td>
<td>Content</td>

<td><a href="/books/4d3c96383060da31c9000001">Show</a></td>
</tr>
</div>


我希望每本书都有自己的列{2,3,4,... 12},因此如果我需要使用jquery,我可以分别针对每本书。另一个问题是,我想对部分中的所有内容使用渲染部分,但是当我使用部分渲染时,它将所有项目放在1列{rebooking Book.all}内,因此它只重复所有包含的信息。我觉得应该使用另一种方法或编辑当前方法来完成此操作,但是我不确定会发生什么。谢谢!

格林兹

更新资料

嘿,迈克,我真的很感谢您在尝试向newby解释情况方面所做的努力。我基本上回到了第一步,应用了每段代码,以了解它的发展方向。您在解释问题方面做得很出色,但是我仍然无法理解呈现代码时发生的情况,因为用于呈现和布局的红宝石文档非常基础,并且没有任何示例可以让我看到div_for标签如何影响呈现过程(我是个有视觉感的人。我想向您展示新代码,但注释不允许这样做,所以我打开了一个答案:(

第一次编辑是删除

<% @books.each do |book| %> 


并替换为

<table> 
render @books
</table>


所以现在我的代码看起来像这样{content.html.erb}

<div id="maincontent">

<table>
render @books
</table>
<div id ="column1">
<tr>
<td><%= book.name %></td>
<td><%= book.title %></td>
<td><%= book.content %></td>
<td><%= link_to 'Show', book %></td>
</tr>

</div>
<% end %>
<br />

<div id="paginate">

<%= will_paginate(@books,
) %>
</div>
</div>


当应用此选项时,在渲染指向我代码最后一行的视图时,我收到意外的结束错误。(将end标签添加到末尾时,它又抛出了另一个错误),因此我从_bookcontent.html更改了渲染页面。 erb到_book.erb,并将局部插入在column1 div之间,如图所示。

    <div id ="column1">

<%= render :partial => "book" %>

</div>


<%结束%>

我知道这个标签现在正在做什么,这告诉我的部分是,每本“书”都会从数据库中呈现最新的书ID。因此,现在render @books语句将跟踪我插入的每个渲染页面的book id。 (我可能会误会,但这是我的看法)。所以现在臭名昭著
此页面在此处呈现的_book.erb是我的代码。

<% div_for(book) do %>
<tr>
<td><%= book.name %></td>
<td><%= book.title %></td>
<td><%= book.content %></td>
<td><%= link_to 'Show', book %></td>
</tr>
<% end %>


根据我对<%div_for(book)的阅读,%>在每本书周围都包裹了一个唯一的div ID,例如

 <div id="book_123"> Book.name / Book.Title </div>


现在,此div包含在我的column1 div ID内,之前它具有我的列/框的所有样式。由于缺少有关div_for标记的信息,我仍然在我的代码中遇到错误和意外结束。 (尝试使用ruby -w调试_book.erb无效,因此我不知道如何使用结束标记)。这些是我要纠正的理智的要点。


我应该从内容页面中删除 <div id="column1">并在内容页面上的其他位置应用新的div ID /类吗?
在分页之前,我应在局部和content.html.erb中的哪个位置插入<%end%>标签?似乎当我两个渲染器都抱怨每页末尾出现意外结束时。
当用您的代码代替我的代码时,我会收到上述意外的结果,但这并不是由于您肯定在我的代码中缺少组件。
首先,我可能会从布局感知上走错路了,但是我的主要目标是要有2行,每行6个盒子/列,每个盒子包含一本不同的书。然后使用分页滚动回到较早的书籍,并应用现在可以正常使用的相同布局,但是我对每本书使用相同的列ID,并且需要分别定位所有框。

最佳答案

如果我对您的理解正确,那么这只是按照您的意思而不是您的意思做的一个例子。

任何具有content方法的控制器都应如下所示:

def content
@books = Book.paginate :page => params[:page], :per_page => 50
end


您的视图应如下所示(旧语法,但仍可以正常工作)。

content.html.erb:

<div id="maincontent">
<table>
<%= render :partial => 'book', :collection => @books %>
</table>
<br />
<%= will_paginate @books %>
</div>


或者尝试新的语法。新语法很奇怪,我还没有亲自尝试过,但是我认为这应该可行。因此,这是content.html.erb的另一个Rails 3版本:

<div id="maincontent">
<table>
<%= render @books %>
</table>
<br />
<%= will_paginate @books %>
</div>


我认为它根据类名称以及是否可枚举来选择部分。

_book.html.erb部分:

<%= div_for(book) do %>
<tr>
<td><%= book.name %></td>
<td><%= book.title %></td>
<td><%= book.content %></td>
<td><%= link_to 'Show', video %></td>
</tr>
<% end %>


Div_for是秘诀。

唯一需要的一端是在div_for之后调用do时要关闭打开的块的局部内部。

关于ruby-on-rails-3 - Ruby on Rails呈现具有动态内容和部分内容的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4801668/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com