Question

Je sais que je suis un débutant à ce et que je ne suis pas digne, mais quelqu'un pourrait me s'il vous plaît expliquer pourquoi je reçois une méthode Pas d'erreur? Voici ce que je l'ai fait. Je généré une nouvelle migration pour ma base de données sur mon application rails existants et la migration est appelée « Profil ». Je courais db: migrate puis à modifier ma continuai précédente sous forme de « new.html.erb ». Le code ressemble à ceci:

class CreateProfiles < ActiveRecord::Migration
  def self.up
    create_table :profiles do |t|
      t.string :major
      t.string :year
      t.string :books_sell
      t.string :books_buy
      t.string :facebook
      t.string :restaurants
      t.string :interests

      t.timestamps
    end
    add_index :profiles, :major
    add_index :profiles, :year
    add_index :profiles, :books_sell
    add_index :profiles, :books_buy
    add_index :profiles, :facebook
    add_index :profiles, :restaurants
    add_index :profiles, :interests
  end

  def self.down
    drop_table :profiles
  end
end

En fait, je suis d'ajouter une section de profil sur mon application, mais je reçois ceci:

   undefined method `major' for #<User:0x00000100b6e030>
    Extracted source (around line #23):

    20:   </div>
    21:   <div class="field">
    22:     <%= f.label :"major" %><br />
    23:     <%= f.text_field :major %>
    24:   </div>

Ceci est mon point de vue / utilisateurs / fichier new.hmtl.erb:

<h1>Sign up</h1>

<%= form_for(@user) do |f| %>
  <%= render 'shared/error_messages', :object => f.object %>
  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.label :email %><br />
    <%= f.text_field :email %>
  </div>
  <div class="field">
    <%= f.label :password %><br />
    <%= f.password_field :password %>
  </div>
  <div class="field">
    <%= f.label :password_confirmation, "Confirmation" %><br />
    <%= f.password_field :password_confirmation %> 
  </div>
  <div class="field">
    <%= f.label :"year" %><br />
    <%= f.text_field :year %>
  </div>
  <div class="field">
    <%= f.label :"major" %><br />
    <%= f.text_field :major %>
  </div>
  <div class="actions">
    <%= f.submit "Sign up" %>
  </div>
<% end %>

Qu'est-ce qui manque?

Était-ce utile?

La solution

Le problème ici est que j'avais déjà vue formulaire dûment rempli selon le modèle de l'utilisateur. Je voulais virer de bord sur cette forme et je créé un nouveau profil nommé de migration. Je l'ai fait parce que je n'étais pas en mesure de restaurer manuellement ma migration du modèle utilisateur et juste amure sur les chaînes et les colonnes.

Cependant, l'ajout de champs de texte à partir du modèle de profil selon le modèle de l'utilisateur pose une erreur.

Ce que je n'étais à la place que je créé une migration Add_xxx_to_yyy qui m'a permis d'ajouter des colonnes sur une migration précédemment créée sans aucun problème. Je rails generate migration Add_profile_to_User avec les underscores parce que je suis sur des rails 3.0 (il ne fonctionne pas quand je l'ai Addprofiletouser). Et voilà!

Autres conseils

Vous avez collé votre migration pour le modèle Profile. Et je suppose que dans votre variable @user vous avez nouvelle instance de modèle User.

Et puisqu'il n'y a pas de méthode ou major attribut défini pour votre utilisateur, vous voyez la plainte « méthode non définie ... »

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top