Привет всем, я некоторое время был далеко от рельсов и догонял рельсы 3, я думаю, что моя проблема может быть связана с использованием неподдерживаемого синтаксиса от рельсов 2, который не добрался до рельсов 3. В любом случае, мойпроблема может быть в широком смысле, но хотя я смог исправить все другие проблемы с этим приложением, это все еще озадачивает меня.
На домашней странице сайта есть этот код:
<%- unless @requested_contacts.empty? -%>
<h2>Contact Requests</h2>
<ul class="list requests small">
<%- @requested_contacts.each do |contact| -%>
<%- conn = Connection.conn(current_user, contact) -%>
<li>
<p><%= person_link contact %></p>
<p class="meta published">
<%= time_ago_in_words(conn.created_at) %>
ago
</p>
<p>
<%= link_to "Respond", edit_connection_path(conn) %> |
<%= link_to "View profile", contact %>
</p>
</li>
<%- end -%>
</ul>
<%- end -%>
Когда я нажимаю кнопку «Ответить» вместо перехода на страницу редактирования подключения, я получаю сообщение об ошибке:
undefined method `contact' for nil:NilClass
app/controllers/connections_controller.rb:15:in `edit'
{"id"=>"4"}
Код контроллера:
def edit
@contact = @connection.contact
end
Person.rb:
has_many :connections
has_many :contacts, :through => :connections, :order => 'people.created_at DESC'
has_many :requested_contacts, :through => :connections, :source => :contact
Connection.rb:
belongs_to :person
belongs_to :contact, :class_name => "Person", :foreign_key => "contact_id"
def conn(person, contact)
find_by_person_id_and_contact_id(person, contact)
end
Страница редактирования, на которую я пытаюсь попасть:
<h2>Contact request</h2>
<p>You have a contact request from <%= @contact.name %></p>
<% form_for(@connection) do |f| %>
<p>
<%= f.submit "Accept", :class => "button" %>
<%= f.submit "Decline", :id => nil, :class => "button" %>
</p>
<% end %>
Я думаю, что этовсе соответствующие коды к этому вопросу.Если вам нужно что-то еще увидеть, пожалуйста, дайте мне знать, я очень благодарен за любую помощь.Извините, если это бросается в глаза, я изучаю рубин и рельсы как хобби (и люблю это до сих пор!).