我正在努力创建一个入门控制器,通过上传照片,寻找朋友,邀请他人等来指导新用户。
GettingStarted本身没有模型,只是引导用户完成向导。用户可以在不破坏站点的情况下完全绕过此启动过程。这只是一个指南...
到目前为止我所做的是:
路线:
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
建议,对上述的想法?
由于
答案 0 :(得分:0)
你的GettingStarted
模型不必继承自ActiveRecord::Base
,但确实如此,你会收到错误,因为Base期望你的数据库中有一个名为GettingStarteds的表,或者什么。如果你想保持内容动态,意味着将其保存在数据库中以便你可以更改它,那么你非常接近,你可以使用像“步骤”这样的自然语言模型,并且步骤有一个与之关联的顺序,那么你可以根据其在入门控制器中的顺序查找该步骤。您还可以使用带有步骤控制器的vanilla工作流程,然后使用:as =>
选项重命名路径中的路径
如果步骤是静态的,您可能需要探索一些可用的静态页面模型库,如高电压https://github.com/thoughtbot/high_voltage