0

Привет, ребята, спасибо за помощь. Я создаю своего рода онлайн-игру с использованием рельсов. Пользовательский интерфейс должен быть сосредоточен вокруг одной страницы: пользователи/... Я сталкиваюсь с проблемой при создании и взаимодействии с объектами за пределами пользователей. Например, на странице пользователя пользователи должны иметь возможность создавать крепость. Крепость, конечно же, является его собственным объектом с собственной моделью и контроллером. Если бы я попытался создать форму для создания форта с использованием тега form_for на странице пользователей, форма не сможет получить доступ к переменной экземпляра @fort форт-контроллера и вызовет ошибку. В моей попытке решить эту проблему, я создал частичный вид на форты под названием _new.html.erb, содержащей форму ФортаВозможно ли получить доступ к переменной экземпляра контроллера в частичном, если частичное изображение отображается с помощью другого контроллера?

Здесь:

<h1>Create a New Fort</h1> 
    <%= form_for(@fort) do |f| %> 
    <%= render 'shared/error_messages' %> 
     <%= f.label :name %> 
     <%= f.text_field :name %> 

     <%= f.label :ownership %> 
     <%= f.text_field :ownership %> 

<div style="display:none;"> 

     <%= f.label :xco %> 
     <%= f.text_field :xco %> 

     <%= f.label :yco %> 
     <%= f.text_field :yco %> 

     <%= f.label :territory %> 
     <%= f.password_field :territory %> 

</div> 

     <%= f.submit "Create a Fort" %> 
    <% end %> 

Я тогда рендерингом, что парциальный в моем пользовательском шоу. html.erb здесь:

<%= render "forts/new" %> 

конечно перемещение формы частичное не делает ничего, но то, что я надеюсь сделать что-то вдоль линий этого:

<%= render partial: "new", object: @fort %> 

Я хотел бы передать переменную экземпляра форта в частичную, а затем отобразить частичное в представлении пользователей. Однако я признаю, что переменная, переданная частичной, как описано выше, поступает непосредственно из представления, которое частично выполняется, и при этой реализации я теряю идеи.

Я считаю, что ключ может быть где-то в ассоциациях, и я просканировал в Интернете информацию об этом. Мои модели настроены таким образом, что пользователь has_many форты и форт принадлежат пользователю. Я не знаю, поможет ли это.

Вся помощь ценится,

Благодарности грузы,

Alex P

ответ

0

Я думаю, что вы ищете accepts_nested_attributes_for. This RailsCast объясняет, как он используется.

В вашем случае вы должны добавить accepts_nested_attributes_for :forts в свою модель. Я не уверен, как выглядит ваш пользователь/шоу, но вы должны просто добавить <%= f.fields_for :forts do |f| %>, который будет содержать поля в настоящее время в forts/new.

1

С вашего внешнего зрения, предполагая, что @fort был экземпляр в контроллере, вы можете передать @fort непосредственно к вашей частичной например:

<%= render 'forts/new', :fort => @fort %> 
0

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

  <%= render 'shared/error_messages', :locals => {:info => first, :img_style => "original"} %>