2010-12-15 30 views
0

Im travaillant pour créer un contrôleur obtenir commencé, qui guide un nouveaux utilisateurs à travers le téléchargement d'une photo, trouver des amis, inviter les gens, etc.Rails - Création d'un contrôleur GettingStarted

GettingStarted n'a pas de modèle lui-même, il guide les utilisateurs à travers tout un sorcier. Un utilisateur peut totalement contourner ce processus de démarrage sans casser le site. Il est juste un guide ...

Ce que je l'ai fait jusqu'à présent est:

  1. Créer un itinéraire, contrôleur et modèle:

Route:

resources :getting_started 
    namespace :getting_started do 
    resource :users, :only => [:edit, :update] 
    end 

Contrôleur:

class GettingStartedController < ApplicationController 

    def index 
    @current_step = current_step 
    end 

protected 

    def current_step 
    current_step || steps.first 
    return 1 
    end 

    def steps 
    %w[step1 step2 step3] 
    end 

end 

Modèle

class GettingStarted < ActiveRecord::Base 

    attr_writer :current_step 
    attr_accessor :current_step 

    def current_step 
    #current_step || steps.first 
    return 1 
    end 

    def steps 
    %w[step1 step2 step3] 
    end 

    def next_step 
    self.current_step = steps[steps.index(current_step)+1] 
    end 

    def previous_step 
    self.current_step = steps[steps.index(current_step)-1] 
    end 

    def first_step? 
    current_step == steps.first 
    end 

    def last_step? 
    current_step == steps.last 
    end 

end 

Vue:

<%= @current_step.inspect %> 
     <% form_for @gettingstarted do |f| %> 
     <table> 
      <tbody> 
       <tr> 
        <td> 
         <%= link_to image_tag current_user.profile_pic.url(:large), :class => 'getting-started-profile-pic' %> 
        </td> 
        <td> 
         <a href="" class="getting-started-link">Upload a photo</a> 
        </td> 
       </tr> 
      <table> 
     <tbody> 
     <% end %> 

En ce moment je suis coincé sur la question que j'ai besoin GettingStarted pour guider les utilisateurs grâce à des modèles existants, ne pas être un modèle lui-même. Et je reçois la méthode non définie `model_name 'pour NilClass: Classe

Suggestions, réflexions sur ce qui précède?

Merci

Répondre

0

votre modèle GettingStarted n'a pas à hériter de ActiveRecord::Base mais il le fait, vous obtenez une erreur parce que la base attend une table dans votre base de données appelée GettingStarteds, ou quelque chose. Si vous voulez garder le contenu dynamique, c'est-à-dire le sauvegarder dans la base de données pour pouvoir le modifier, alors vous êtes assez proche, vous pouvez utiliser un modèle de langage naturel comme 'steps' et les étapes ont un ordre associé. peut rechercher l'étape en fonction de sa commande dans le contrôleur de démarrage. vous pouvez également utiliser un flux de travail de vanille avec un contrôleur étapes, puis renommer la route dans les routes avec l'option :as =>

si les étapes sont statiques, vous pouvez explorer quelques-unes des bibliothèques de modèles de pages statiques disponibles comme haute tension https://github.com/thoughtbot/high_voltage