Ich versuche kumulative show.html für jeden Benutzer, der einige Daten von 4 verschiedenen Modellen anzeigt. Diese Tabellen:Undefinierte Methode, falsche Zuordnung oder Aufruf?
Problem ist, dass ich weiß nicht, wie für jede Schaltfläche, um Daten von Webseiten Tabelle nennen. Mit der Anzeige der Daten der Buttons gibt es kein Problem. Dieser Teil von HTML sollte in etwa so aussieht:
<% if @profile.buttons.any? %>
<ul>
<% @buttons.each do |button| %>
<li>
<%= button.website.name %>
<%= link_to button.user_website_url, button.user_website_url %>
</li>
<% end %>
</ul>
<% else %>
<p>None websites added. Please finish your profile creation.</p>
<% end %>
Modelle:
class Website < ActiveRecord::Base
has_many :buttons
mount_uploader :logo, LogoUploader
validates :name, presence: true, length: { maximum: 50 }
validates :logo, presence: true
end
class Button < ActiveRecord::Base
belongs_to :profile
belongs_to :website
accepts_nested_attributes_for :website
validates :description, length: { maximum: 140 }
validates :user_website_url, presence: true, length: { maximum: 200 }
end
class Profile < ActiveRecord::Base
belongs_to :user
has_many :buttons, :dependent => :destroy
#...
end
Benutzer Controller:
def show
@user = User.find(params[:id])
@profile = @user.profile
@buttons = @profile.buttons
end
In diesem Zustand von allem, was ich einen Fehler bin immer:
undefined method `name' for nil:NilClass
Also, was ist falsch daran? Ich habe viele Varianten von Assoziationen ausprobiert und ich bekomme entweder den Fehler, den ich oben gesetzt habe oder dass keine ID (falsche Abfrage) für jede Webseite passiert (mit der ich auch nicht umgehen konnte).
danke, das war es. kingguy's .try (Anwendung erlaubte mir zu überprüfen, dass irgendwo in meiner Knopftabelle ein alter Datensatz ohne website_id war. Interessanterweise war es kein Datensatz für die Schaltfläche, die für den überprüften Benutzer angezeigt wurde. –