Я пытаюсь получить сообщение и систему комментариев, работающих, для этого, однако я хочу, чтобы только один комментарий был сделан за сообщение. Только как я пытаюсь создать систему, где содержание будет отображаться с последующим комментарием 7 раз в одном посте ... Пример ...Когда сделан комментарий, больше не может быть создано, только показано
модели Содержание программы 1 корпус 1
Commentmodel1
программы содержание 1 модель тела 2
Commentmodel2
модель программы 1 б Содержание оды 3
Commentmodel3
.etc.etc.
Для меня это самый простой способ сделать это, создав 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
Заранее, спасибо за вашу помощь, высоко ценится!
Если вы хотите только один комментарий будет добавлен к сообщению, просто сделайте проверку в 'CommentsController # создать '. Если '@ program' уже имеет комментарий, не создавайте новый. – khustochka
Как я могу это сделать? извините новичок в RoR – user2278385