Ruby On Rails在脚手架之后添加新页面
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ruby On Rails在脚手架之后添加新页面相关的知识,希望对你有一定的参考价值。
我制作了一个名为b_page的脚手架,我创建了一个bio的迁移我添加了一个biopage.html.erb在控制器中:
def biopage
@b_pages = BPage.all
end
在routes.rb中
resources :b_pages do
collection do
get 'biopage'
end
end
在bio.html.erb中:
<div class="jumbotron">
<h1>Bio of :</h1>
<h2><b><%= @b_page.Bpage_name %></b></h2>
<h3><%= @b_page.user.email %></h3>
</div>
<%= @b_page.bio %>
但我仍然得到错误:
BPAGEController #show中的ActiveRecord :: RecordNotFound无法找到带有'id'= biopage突出显示的BPage:
@b_page = BPage.find(params[:id])
答案
首先,这对我来说有点奇怪:
resources :b_pages do
collection do
get 'biopage'
end
end
因为它会产生一条路线:/b_pages/biopage
。您可能想要做以下事情:
resources :b_pages, except: :show
get '/biopage/:id', to: 'b_pages#show'
这样,你的biopage
路线将转到show
控制器方法,你仍然可以使用其他b_pages
路线。
您正在查看ActiveRecord::RecordNotFound
错误消息,因为您没有要显示的BPage
对象,因此show
方法正在抱怨。请注意我上面写的路线如何使用:id
- 这是因为show
动作通常需要在前端显示某条记录的id。如果你想使用biopage
并将它链接到show
方法,你应该返回一个实际显示的对象。否则你应该为biopage
创建一个完全不同的控制器方法,它不会干扰b_pages
资源。路线中有类似的东西:
resources :b_pages
get '/biopage/:id', to: 'b_pages#your_method'
在控制器中你有
class BPages < ApplicationController
# index, show, destroy, etc. here
def your_method
# Get whatever object you want returned here
end
end
以上是关于Ruby On Rails在脚手架之后添加新页面的主要内容,如果未能解决你的问题,请参考以下文章