Передача переменной между представлениями в Rails

#ruby-on-rails #ruby #ruby-on-rails-3 #variables #views

#ruby-on-rails #ruby #ruby-on-rails-3 #переменные #число просмотров

Вопрос:

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

У меня есть это в моем users -> 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 к моим отношениям -> новый вид.html.erb.

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

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

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

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

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

Ответ №1:

Это

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

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

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

Ответ №2:

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

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

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

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

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