標籤:ruby on rails
首先搞清楚這句話,在 Ruby 中,方法分為public
、private
和 protected
三種,只有 public
方法才能作為控制器的動作。
我的出錯的代碼如下:
controlle
class ArticlesController < ApplicationControllerdef new enddef createparams.permit! @article = Article.new(params[:article])@article.saveredirect_to @articleendprivate def article_params params.required(:article).permit(:title, :text) end def show @article = Article.find(params[:id]) endend
view show.html.erb
<p><strong>Title:</strong><%= @article.title %></p><p><strong>Text;</strong><%= @article.text %></p>
報錯說是:
NoMethodError in Articles#show
Showing /home/huihui/Documents/ruby/blog/app/views/articles/show.html.erb where line #3 raised:
undefined method `title‘ for nil:NilClass
解決方案是:
在controlle檔案裡:
class ArticlesController < ApplicationControllerdef new enddef createparams.permit! @article = Article.new(params[:article])@article.saveredirect_to @articleend def show @article = Article.find(params[:id]) end private def article_params params.required(:article).permit(:title, :text) endend
把show方法改成公有的就好啦