2010-02-24 3 views
0

Я только что закончил руководство по внедрению RoR: http://guides.rubyonrails.org/getting_started.html. Это отличный гид, и все работает.Как показать информацию, прикрепленную к модели из другой модели?

Я пытаюсь его немного расширить, нажав теги SHOWING в представлении «Опубликовать». (Руководство устанавливает его так, что вы можете добавлять теги при добавлении сообщения, даже если тег и пост - разные модели).

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

Для чего это стоит:

<p> 
    <b>Tags:</b> 
    <%=h @post.tags %> 
</p> 

показывает это:

Tags: [#<Tag id: 2, name: "Awesome", post_id: 2, created_at: "2010-02-23 23:53:42", updated_at: "2010-02-23 23:53:42">] 
+0

Я получил ответ –

ответ

2

ли я Вас понял, что вы получите данные тегов вместе с почтовыми данными, но несчастны с дисплеем?

Я хотел бы предложить что-то вроде этого, чтобы сделать его выглядеть лучше:

<% @post.tags.each |tag|%> 
<%= <span class=tag>tag.name</span> %> 
<% end %> 

В идеале вы бы обернуть это в частичном

_show_tags.html.erb:

<% show_tags.each |tag|%> 
<%= <span class="tag">tag.name</span> %> 
<% end %> 

и вызова с

<%= render :partial => show_tags, :collection => @post.tags %> 
+0

Прошу прощения, я не знаю, как прокомментировать ваше решение, поэтому я прокомментирую услышать: Ваше решение сломается, если будет более одного тега. – ajmurmann

+0

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

0

Хорошо, я понял это сам. Должен ли я сам ответить на вопрос или проголосовать за закрытие?

Вот ответ в любом случае:

Перейти к контроллеру сообщений и в шоу действия, добавьте эту строку в:

@tag = Tag.find(params[:id]) 

Это находит тег необходимо. Затем в представлении после показа добавьте эту строку в:

<p> 
    <b>Tags:</b> 
    <%=h @tag.name %> 
</p> 

Это печатает название тега.

Смежные вопросы