Передача переменной между представлениями в Rails - PullRequest
3 голосов
/ 28 октября 2011

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

У меня есть это в моих пользователях -> index.html.erb

<% @users.each do |user| %>
  <tr>
  <td><%= user.name %></td>
  <td><%= user.email %></td>
  <td><%= user.id %></td>
  <td><%= link_to 'Profile', user %></td>
  <td><%= link_to 'Connect', new_relationship_path, :id => user.id %><td>
  </tr>
<% end %>

Я пытаюсь передать user.id моим отношениям -> new.html.erb view.

в моем контроллере у меня есть:

class RelationshipsController < ApplicationController
    def new
        @id = params[:id]
    end
end

и, наконец, у меня есть отношения -> new.html.erb

<section id="main">
  <h1>Sign Up</h1>
  <td><%= @id %></td>
</section>

Я верю: идентификатор не передается правильно. Чего мне не хватает во всех других примерах? Я не получаю ошибок, просто ничего не отображается.

Ответы [ 2 ]

6 голосов
/ 28 октября 2011

Этот

link_to 'Connect', new_relationship_path, :id => user.id

передает: id как html_option в link_to, поэтому он будет использоваться как атрибут "id" в вашем элементе ссылки.Вместо этого вы хотите передать его в качестве параметра помощнику по маршруту:

link_to 'Connect', new_relationship_path(:id => user.id)
3 голосов
/ 28 октября 2011

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

, тогда вы сможете создавать отношения для конкретного пользователя через прямой URL-адрес.

например: new_user_relationship_path (user) # => / user / 2134 / relations / new

тогда в вашем контроллере отношений params [: user_id] будет иметь значение 2134

, на которое вы должны смотреть: http://guides.rubyonrails.org/routing.html

...