First understand this sentence, in Ruby, the method is divided into
public, private
And protected
Three kinds, only public
The method can act as the controller action.
My error code is as follows:
controlle
class ArticlesController <ApplicationController
def new
end
def create
params.permit!
@article = Article.new (params [: article])
@ article.save
redirect_to @article
end
private
def article_params
params.required (: article) .permit (: title,: text)
end
def show
@article = Article.find (params [: id])
end
end
view show.html.erb
<p>
<strong> Title: </ strong>
<% = @ article.title%>
</ p>
<p>
<strong> Text; </ strong>
<% = @ article.text%>
</ p>
The error message is:
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
The solution is:
In the control file:
class ArticlesController <ApplicationController
def new
end
def create
params.permit!
@article = Article.new (params [: article])
@ article.save
redirect_to @article
end
def show
@article = Article.find (params [: id])
end
private
def article_params
params.required (: article) .permit (: title,: text)
end
end
Just change the show method to public