В Rails, как можно переместить «новое» представление для одной модели в представление «шоу» из другой модели? - PullRequest
0 голосов
/ 25 августа 2010

Я читал и смотрел видео на вложенных формах, но мне не повезло, что все заработало.(... и я знаю, это просто невероятно легко ...)

У меня есть это представление 'views / comments / new':

<% form_for([@job, @comment]) do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :body %><br />
<%= f.text_area :body %>
</p>
<p>
<%= f.submit "Create" %>
</p>
<% end %>

... и яЯ хотел бы переместить эту форму / текстовое поле в представление «jobs / show».

моя модель работы: job.rb

belongs_to :user
has_many :comments, :dependent => :destroy
has_many :assets
accepts_nested_attributes_for :assets
accepts_nested_attributes_for :comments

То, что я хотел бы сделать, это иметь формудобавить новые комментарии внизу этой страницы "показать".Вместо того, чтобы перейти к «/ jobs / 15 / comments / new», я хотел бы иметь форму «новый комментарий» в представлении вакансий.

Как я могу это сделать?

Приветствия.

Ответы [ 2 ]

0 голосов
/ 25 августа 2010

Вы можете перетащить этот код формы в комментариях / новых прямо в представление заданий / шоу, но вам нужно убедиться, что вы определили @comment в вашем контроллере.

jobs_controller.rb

def show
 @job = Job.find(params[:id])
 @comment = @job.comments.new
respond_to do |format|
 format.html
end
end

Возможно, вы захотите убедиться, что действие создания для комментариев перенаправляет пользователей обратно на задание, а не на комментарий.

Моя личная рекомендация - переместить эту форму в частичное, но если вы только начинаете с рельсов, это заставит вас двигаться в правильном направлении.

0 голосов
/ 25 августа 2010

Если я правильно понял, вы хотите показать все комментарии для работы на странице показа вакансий, верно?

Если это так, я думаю, что следующий код сделает эту работу:

<% @job.comments.each do |comment| -%>
  <%= comment.body %>
  <p/>
<% end -%>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...