Отрисовка частичных форм от других контроллеров - PullRequest
6 голосов
/ 15 июля 2011

У меня есть несколько общих партиалов, которые я могу визуализировать с любого контроллера, однако у меня возникли некоторые проблемы с рендерингом парциальных форм с другого контроллера.Я хочу иметь возможность добавлять заметки к моим контактам

В моих контактах / show.html.erb у меня есть следующее

<% render :partial => "notes/form", :note => Note.new %>

В моих заметках / _form.html.erb яиметь следующее

<%= form_for @note do |f| %>
  <%= render 'shared/error_messages', :object => f.object %>
  <p>
    <%= f.label :content %><br />
    <%= f.text_field :content %>
  </p>
  <p>
    <%= f.label :contact_id %><br />
    <%= f.number_field :contact_id %>
  </p>
  <p><%= f.submit %></p>
<% end %>

Однако я получаю сообщение об ошибке:

Отображение /Applications/Rails/apps/saas31/app/views/notes/_form.html.erb, где поднята строка # 1:

неопределенный метод `имя_модели 'для NilClass: класс

Извлеченный источник (вокруг строки # 1):

1: <% = form_for @note do | f |%> 2: <% = рендеринг 'shared / error_messages',: object => f.object%>

Я начинаю привыкать к рельсам, но у меня возникли несколько мелких проблем, которые можно было ожидатьпри изучении чего-то нового, я полагаю.У кого-нибудь есть идеи?

Ответы [ 2 ]

18 голосов
/ 15 июля 2011

Ваши локальные переменные должны передаваться в хеш-коде локальных файлов.

<% render :partial => "notes/form", :locals => {:note => Note.new} %>

Прочтите раздел 3.4.4 здесь.

Ваш частичный также не должен использовать переменные экземпляра, измените следующее:

<%= form_for @note do |f| %>

до:

<%= form_for note do |f| %>

редактировать

Если вы хотите использовать переменную экземпляра, вы можете сделать следующее:

<% render :partial => "notes/form", :locals => {:note => @note} %>
2 голосов
/ 16 апреля 2012

столкнулся с той же проблемой, и этот пост был полезен в решении. Добавление моих заметок и, надеюсь, это поможет кому-то еще:)

У меня был контроллер Users и _form.html.erb, который нормально отображался, когда я открывал страницу / users / new. Я пытался отобразить форму как частичную из моего /layouts/application.html.erb, так как я хотел дать пользователям возможность создавать нового пользователя с любой страницы.

В итоге я создал новый метод (new_user) в application_helper.rb. Вот код:

def new_user
  User.new    
end

Затем я визуализирую частичное из application.html.erb с помощью:

<%= render :partial => 'users/form', :locals => {:user => new_user} %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...