Использование связей Active Record в Ruby on Rails

184
19 сентября 2017, 06:07

Имеются два класса: 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

READ ALSO
div блок с прокруткой

div блок с прокруткой

Футер и хедер должны быть всегда статичны, а высота дивов регулироваться автоматически, в зависимости от высоты окнаКак можно решить эту...

403
Как прижать блок к краю который повернутый по вертикали?

Как прижать блок к краю который повернутый по вертикали?

Доброго времени суток, нужно сделать вот такие вкладки (prntscrcom/gm666f)

202
Навигация по записям из бд

Навигация по записям из бд

Пример: страницы поиска google (1,2,3

265