控制器显示动作

时间:2012-05-06 02:08:29

标签: ruby ruby-on-rails-3

我有2个模型用户(设计宝石)和个人资料

  class User < ActiveRecord::Base
    has_one :profile

  class Profile < AciveRecord::Base
    belongs_to :user

每个模型的视图中的所有内容都可以正常工作,但我想在应用程序布局中使用link_to。

  <% if user_signed_in? %>
  <li><%= link_to current_user.username , profile_path(@profile) %></li>

但它向我显示了这个错误:

 ActionController::RoutingError (No route matches {:action=>"show", :controller=>"profiles"})

我的个人资料控制器

  def show 
  @profile = Profile.find(params[:id])

respond_to do |format|
  format.html # show.html.erb
  format.json { render json: @profile }
end

我的佣金路线:

            profiles GET    /profiles(.:format)                             profiles#index
                     POST   /profiles(.:format)                             profiles#create
         new_profile GET    /profiles/new(.:format)                         profiles#new
        edit_profile GET    /profiles/:id/edit(.:format)                    profiles#edit
             profile GET    /profiles/:id(.:format)                         profiles#show
                     PUT    /profiles/:id(.:format)                         profiles#update
                     DELETE /profiles/:id(.:format)                         profiles#destroy
    new_user_session GET    /users/sign_in(.:format)                        devise/sessions#new
        user_session POST   /users/sign_in(.:format)                        devise/sessions#create
destroy_user_session DELETE /users/sign_out(.:format)                       devise/sessions#destroy
       user_password POST   /users/password(.:format)                       devise/passwords#create
   new_user_password GET    /users/password/new(.:format)                   devise/passwords#new
  edit_user_password GET    /users/password/edit(.:format)                  devise/passwords#edit
                     PUT    /users/password(.:format)                                            devise/passwords#update

 cancel_user_registration GET    /users/cancel(.:format)                    registrations#cancel
        user_registration POST   /users(.:format)                           registrations#create
    new_user_registration GET    /users/sign_up(.:format)                   registrations#new
   edit_user_registration GET    /users/edit(.:format)                      registrations#edit
                          PUT    /users(.:format)                           registrations#update
                          DELETE /users(.:format)                           registrations#destroy

我希望链接显示currentuser.username(我已经设置了Devise用户名)并链接到current_user的配置文件页面。

谢谢!

1 个答案:

答案 0 :(得分:0)

看起来您没有在实际使用布局的操作中设置@profile,因此它将以nil开头,并且路由器需要id来生成路由。

您需要将@profile设置为使用应用程序布局呈现的任何操作中的某些内容。这可能是全局before_filter的工作。