0

我试图创建一个系统,允许运动员响应他们的教练训练计划,为此我允许教练创建内容,但是我正在使用基于博客的系统来创建它......目前页面显示如下

内容标题

内容信息1...

内容信息 2...

内容信息 3...

注释...

评论 1

评论 2

评论 3

。ETC

但是我想设置它,以便每个帖子最多只能有 7 条评论,并且每个帖子都像这样设置......

内容标题

内容信息1...

评论 1

内容信息 2...

评论 2

内容信息 3...

评论 3

。ETC

我意识到这可能不是我想要的最好方法,但它有效(只是不会出现在我想要的地方)我确实做了创建更多模型的实验,但每当我尝试运行超过每个帖子有 1 个评论系统。我想知道我是否可以帮助解决这个问题,或者我可以采取什么方法来使这更容易,或者如果模型可以工作并且我只是做错了什么,甚至更好?告诉我这是否还不足以提供足够的信息,我会尝试提供更多信息!谢谢

.

.

编辑:

我使用的模型是程序 - 与本周的训练计划一样 教练 - 向骑手输入数据的教练 车手 - 用他们自己的数据评论教练数据。

我不确定到底需要什么文件,所以我已经包含了我要推送到的 github 页面的链接(https://github.com/effectonedesign/coacheasy1),如果需要任何其他信息,请告诉我!

我喜欢“头脑”所说的话,但是,我已经完成了所说的一切,在我的 def 显示(程序控制器)中说有一个错误,我不断收到这条消息 undefined method `coaches' for nil:NilClass 一切都是相同的对他来说,但我遇到了问题,我真的很感谢你的帮助!谢谢

4

1 回答 1

0

我可能会为上述创建 3 个模型TrainingPlanSection(或内容、text_block 等)和Comment.

然后执行以下操作

  • TrainingPlan has_many :sections
  • 部分 belongs_to :training_plan
  • Section has_one :comment (如果每个部分只允许 1 条评论,否则使用 has_many)
  • 评论belongs_to :section

现在,要实现您想要的格式,请在您的视图中执行以下操作:

<% @training_plan.sections.each do |section| %>
  <%= section.text %>
  <%= section.comment.text %>
<% end %>

如果您允许多条评论:

<% @training_plan.sections.each do |section| %>
  <%= section.text %>
  <% section.comments.each do |comment| %>
    <%= comment.text %>
  <% end %>
<% end %>

意见表

我尚未测试以下内容,因此您可能需要调整一些部分。
训练计划控制器:

def show
  # using includes will query the database 3 times only (once for each table) rather than
  # querying it 1 + N + N (in this case 7 sections, 7 comments possibly, so 15 times)
  @training_plan = TrainingPlan.includes(:sections, sections: :comment).find(params[:id])
  @sections = @training_plan.sections
  @sections.each do |section|
    # only build a new comment if there is no comment for that section already
    section.build_comment unless section.comment
  end
end

在你看来views/training_plans/show.html.erb

<%= @training_plan.title %> # or whatever
<% @sections.each do |section|
  <%= @section.content %>
  <% if section.comment %>
    <%= section.comment.content %>
  <% else %>
    <%= render 'comments/form', comment: section.comment %> # or wherever you have the form
  <% end %>
<% end %>

意见/评论/_form.html.erb

# This might break if you have a separate comment action somewhere which passes an
# instance variable @comment to the form
<%= form_for comment do |f| %>
  # normal form stuff
<% end %>

如果一切正常,那么在您的培训计划显示页面上,您应该会看到每个部分,如果有评论,则将呈现该评论,否则将显示一个表格。

根据您的路线,您可能需要运行rake routes并查看您的评论创建操作在哪里,然后将其传递给表单<%= form for comment, url: some_url_helper_here do |comment| %>

如果是我,我会通过 JavaScript 创建添加评论部分,有点像在这个 railscast中,但由于你是 RoR 的新手,我试图让它保持简单。

于 2013-04-16T00:56:50.840 回答