НАЧИНАЮЩИЙ: простой link_to / маршрутизация - PullRequest
0 голосов
/ 10 октября 2011

Я действительно начинаю плакать здесь;) Пытаюсь сделать ссылку в представлении индекса моделей.

У меня есть 2 простые модели: пользователи и сообщения. Там оба созданы с лесами и имеют рабочие соединения. Пользователь has_many: посты и пост, принадлежащий_пользователю:

То, что я пытаюсь сделать в файле views / post / index.html.er, это список заголовка сообщения и пользователя, которому он принадлежит. Хорошо работает (также изучает html5):

<% @posts.each do |post| %>

<p><%= link_to post.user.name, users_path %>: <b><%= post.title %></b></p>

<% end %>

Ну, это работает, но "users_path" - это не то, что я хочу. Я хочу дать ссылку на конкретного пользователя, которому принадлежит сообщение. Мне жаль говорить, что я не получаю особой помощи от http://guides.rubyonrails.org/routing.html.

Как мне это сделать? Нужно ли указывать @user в index-action для posts_controller? Я очень ценю длинные и подробные ответы здесь.

Тнк тааак много терпения с новичком;)

1 Ответ

1 голос
/ 10 октября 2011

Вы, вероятно, имеете это в своих маршрутах -

resources :posts do
  resources :users
end

маршруты рейка сгенерируют следующее отображение -

    post_users GET    /posts/:post_id/users(.:format)          {:action=>"index", :controller=>"users"}
               POST   /posts/:post_id/users(.:format)          {:action=>"create", :controller=>"users"}
 new_post_user GET    /posts/:post_id/users/new(.:format)      {:action=>"new", :controller=>"users"}
edit_post_user GET    /posts/:post_id/users/:id/edit(.:format) {:action=>"edit", :controller=>"users"}
     post_user GET    /posts/:post_id/users/:id(.:format)      {:action=>"show", :controller=>"users"}
               PUT    /posts/:post_id/users/:id(.:format)      {:action=>"update", :controller=>"users"}
               DELETE /posts/:post_id/users/:id(.:format)      {:action=>"destroy", :controller=>"users"}
         posts GET    /posts(.:format)                         {:action=>"index", :controller=>"posts"}
               POST   /posts(.:format)                         {:action=>"create", :controller=>"posts"}
      new_post GET    /posts/new(.:format)                     {:action=>"new", :controller=>"posts"}
     edit_post GET    /posts/:id/edit(.:format)                {:action=>"edit", :controller=>"posts"}
          post GET    /posts/:id(.:format)                     {:action=>"show", :controller=>"posts"}
               PUT    /posts/:id(.:format)                     {:action=>"update", :controller=>"posts"}
               DELETE /posts/:id(.:format)                     {:action=>"destroy", :controller=>"posts"}

Выше объясняется, какой URL вы можете использовать, и какие объекты нужно передать.
Для ссылки на пользователя сообщения -

<%= link_to "Post User details", post_user_path(post, post.user) %>

OR

<%= link_to "Post User details", url_for([post, post.user]) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...