Имеются два класса: Article (has_many comments) и Comment(belongs_to article).
Каким образом можно реализовать следующее: страница отображает все созданные статьи(article) и комментарии(comments), добавленные к статьям. В конец страницы прикрутить возможность добавления комментариев(comments) с выбором, к какой именно статье они будут принадлежать. Т.е. после списка всех статей и их комметарии прикручено окошко, в которое вводится текст комментария, под ним выпадающее меню с названиями статей -> выбираем статью, жмем "ОК" и комментарий к статье добавляется.
Проблема заключается именно в комментариях. Так как экшн new автоматически привязывает комментарий к конкретной статье.
Для понимания, это то, что уже имеется во вьюхе:
<h1>Список всех задач</h1>
<% @articles.each do |p| %>
<h2><%= p.title %></h2>
<% p.comments.each do |todo| %>
<ul>
<li><%= comment.text %></li>
</ul>
<% end %>
<h2>Новая задача</h2>
<%= form_for ([p, p.comments.build]) do |f| %>
<p>
<%= f.label :"Comment:" %><br>
<%= f.text_field :text %><br>
</p>
<p>
<%= f.submit 'OK'%>
</p>
<% end %>
<ul class="menu">
<li>
<a href="#">Выберите статью</a>
<ul>
<li><???>
</li>
</ul>
Контроллер статьи:
class ArticlesController < ApplicationController
def index
@articles = Article.all
end
def show
@article = Article.find(params[:id])
end
def new
end
def edit
@article = Article.find(params[:id])
end
def create
@article = Article.create(article_params)
@article.save
redirect_to @article
end
def update
@article = Article.find(params[:id])
if @article.update(article_params)
redirect_to @article
else
render 'edit'
end
end
private
def article_params
params.require(:article).permit(:title, :text)
end
end
Контроллер комментарий:
class CommentsController < ApplicationController
def create
@article = Article.find(params[:article_id])
@comment = @article.comments.create(comment_params)
redirect_to article_path(@article)
end
private
def comment_params
params.require(:comment).permit(:goal, :isCompleted)
end
end
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Футер и хедер должны быть всегда статичны, а высота дивов регулироваться автоматически, в зависимости от высоты окнаКак можно решить эту...
Доброго времени суток, нужно сделать вот такие вкладки (prntscrcom/gm666f)