Rails - 创建GettingStarted控制器

时间:2010-12-15 18:51:28

标签: ruby-on-rails ruby-on-rails-3

我正在努力创建一个入门控制器,通过上传照片,寻找朋友,邀请他人等来指导新用户。

GettingStarted本身没有模型,只是引导用户完成向导。用户可以在不破坏站点的情况下完全绕过此启动过程。这只是一个指南...

到目前为止我所做的是:

  1. 创建路线,控制器和模型:
  2. 路线:

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

    控制器:

    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
    

    模型

    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
    

    查看:

    <%= @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 %>
    

    现在我一直坚持我需要GettingStarted引导用户浏览现有模型的问题,而不是模型本身。我正在为NilClass获取未定义的方法`model_name':Class

    建议,对上述的想法?

    由于

1 个答案:

答案 0 :(得分:0)

你的GettingStarted模型不必继承自ActiveRecord::Base,但确实如此,你会收到错误,因为Base期望你的数据库中有一个名为GettingStarteds的表,或者什么。如果你想保持内容动态,意味着将其保存在数据库中以便你可以更改它,那么你非常接近,你可以使用像“步骤”这样的自然语言模型,并且步骤有一个与之关联的顺序,那么你可以根据其在入门控制器中的顺序查找该步骤。您还可以使用带有步骤控制器的vanilla工作流程,然后使用:as =>选项重命名路径中的路径

如果步骤是静态的,您可能需要探索一些可用的静态页面模型库,如高电压https://github.com/thoughtbot/high_voltage