带链接的静态页面
<h1>Dashboard</h1>
<%= link_to 'Dashboard', :action => :dashboard %> |
<%= link_to 'Ask for help', :controller => :tasks, :action => :new %> |
<%= link_to 'Profile', profile_path %>| #relevant line
个人资料控制器
class ProfilesController < ApplicationController
def new
@profile = Profile.new
end
def create
@profile = Profile.new(params[:profile])
@profile.user_id = current_user.id
if @profile.save
redirect_to static_pages_dashboard_path
end
end
def edit
@profile = Profile.find(params[:id])
end
def show
@profile = Profile.current_user
end
end
的routes.rb
Test::Application.routes.draw do
get "welcome/index"
get "static_pages/home"
get "static_pages/dashboard"
get "tasks/index"
root "static_pages#home"
devise_for :users
resources :tasks
resources :profiles
end
我正在尝试创建一个单独的模型/控制器来处理用户的个人信息,称为profile
。
尝试从仪表板视图链接到show
操作/视图会导致错误:
ActionPtroller :: VirtualPages中的UrlGenerationError#dashboard
没有路线匹配{:controller =&gt;“profiles”,:action =&gt;“show”}缺少必需的键:[:id]
我该如何解决这个问题?
谢谢!
答案 0 :(得分:1)
您应该传递个人资料ID以使个人资料显示网址生成成为可能(否则,Rails不知道您想要链接到哪个个人资料):
<%= link_to 'Profile', profile_path(current_user.profile) %>
当然,您需要确保已设置关联,并且用户始终具有关联的配置文件。或者,您可以在呈现链接之前检查配置文件是否存在,如下所示:
<%= link_to 'Profile', profile_path(current_user.profile) if current_user.profile %>