我正在尝试使帖子和评论系统正常工作,但是我希望每个帖子只发表一条评论。仅当我试图创建一个系统时,将在其中显示内容,然后在一篇文章中评论 7 次...示例...
程序模型1 正文内容1
评论model1
程序模型 1 正文内容 2
评论model2
程序模型 1 正文内容 3
评论model3
等等等等
对我来说,这是通过创建 7 个不同的评论模型来做到这一点的最简单方法,我知道可能有一种更简单的方法,但由于我是新手,这似乎是最简单的。但是,我正在努力让一个评论模型只允许发表一条评论。
在这个应用程序中,教练是用户。
以下是涉及的文件,对于模型,程序是基本的帖子模型,评论是评论。
程序/Show.html.erb
<p id="notice"><%= notice %></p>
<p>
<b>Title:</b><br />
<%= @program.title %>
</p>
<p>
<b>Body:</b><br />
<%= @program.cweekcomments %>
</p>
<%= link_to 'Edit', edit_program_path(@program) %> |
<%= link_to 'Back', programs_path %>
<br /><br /><br />
<i>Comments</i>
<% @program.comments.each do |comment| %>
<p>
<b>Comment:</b>
<% if comment %>
<%= comment.body %>
<br />
<%= link_to 'Edit', edit_program_comment_path(@program, comment) %> | <%= link_to 'Destroy', [@program, comment] , method: :delete, data: { confirm: 'Are you sure?' } %>
<% else %>
<%= form_for([@program, @program.comments.build]) do |f| %>
<div class="field">
<%= f.label :body %><br />
<%= f.text_area :body %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
<% end %>
</p>
<% end %>
Programs_controller.rb
class ProgramsController < ApplicationController
before_filter :authenticate_coach!, :except => [:show]
# GET /programs
# GET /programs.json
def index
@programs = Program.find_all_by_coach_id(current_coach[:id])
respond_to do |format|
format.html # index.html.erb
format.json { render json: @programs }
end
end
# GET /programs/1
# GET /programs/1.json
def show
@program = Program.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @program }
end
end
# GET /programs/new
# GET /programs/new.json
def new
@program = Program.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @program }
end
end
# GET /programs/1/edit
def edit
@program = Program.find(params[:id])
end
# POST /programs
# POST /programs.json
def create
@program = Program.new(params[:program])
respond_to do |format|
if @program.save
format.html { redirect_to @program, notice: 'Program was successfully created.' }
format.json { render json: @program, status: :created, location: @program }
else
format.html { render action: "new" }
format.json { render json: @program.errors, status: :unprocessable_entity }
end
end
end
# PUT /programs/1
# PUT /programs/1.json
def update
@program = Program.find(params[:id])
respond_to do |format|
if @program.update_attributes(params[:program])
format.html { redirect_to @program, notice: 'Program was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @program.errors, status: :unprocessable_entity }
end
end
end
# DELETE /programs/1
# DELETE /programs/1.json
def destroy
@program = Program.find(params[:id])
@program.destroy
respond_to do |format|
format.html { redirect_to programs_url }
format.json { head :no_content }
end
end
end
Comments_controller.rb
class CommentsController < ApplicationController
def new
@comment = @program.comments.build
end
def create
@program = Program.find(params[:program_id])
@comment = @program.comments.create(params[:comment])
redirect_to program_path(@program)
end
def destroy
@program = Program.find(params[:program_id])
@comment = @program.comments.find(params[:id])
@comment.destroy
redirect_to program_path(@program)
end
def edit
@program = Program.find(params[:program_id])
@comment = @program.comments.find(params[:id])
end
def update
@program = Program.find(params[:program_id])
@comment = @program.comments.find(params[:id])
respond_to do |format|
#if @program.comments.update_attributes(params[:comment])
if @comment.update_attributes(params[:comment])
format.html { redirect_to program_path(@program), notice: 'Comment was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @comment.errors, status: :unprocessable_entity }
end
end
end
end
在此先感谢您的帮助,非常感谢!