我是RoR開發的相對業餘愛好者(大約一個月的經驗),並且我一直在引用來自不同控制器的變量,直到此時沒有問題。我正在爲博客開發CMS,並且無法讓博客作者的用戶名出現在索引或顯示頁面上。我收到一個「未定義的方法」用戶名爲「nil:NilClass」錯誤。但是,我可以獲得ID。任何人都可以幫助指出我的代碼中的錯誤?我將不勝感激。基本的Ruby on Rails未定義的方法問題
這是博客模式:
class Blog < ActiveRecord::Base
attr_accessible :post, :title
has_one :users
belongs_to :user
end
這是博客控制器的表演和指數部分:
def index
@users = User.all
@blogs = Blog.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @blogs }
end
end
# GET /blogs/1
# GET /blogs/1.json
def show
@blog = Blog.find(params[:id])
@users = User.all
respond_to do |format|
format.html # show.html.erb
format.json { render json: @blog }
end
end
下面是index.html.erb代碼:
<% @blogs.each do |blog| %>
<tr>
<td><%= blog.title %></td>
<td><%= blog.post %></td>
<td><%= blog.user.username %></td> #blog.user_id works perfectly here.
<td><%= link_to 'Show', blog %></td>
<td><%= link_to 'Edit', edit_blog_path(blog) %></td>
<td><%= link_to 'Destroy', blog, method: :delete, data: { confirm:'sure?'} %></td>
</tr>
<% end %>
這是show.html.erb文件的代碼:
<p>
<b>Title:</b>
<%= @blog.title %>
</p>
<p>
<b>Author:</b>
<%= @blog.user.username %>
</p>
<p>
<b>Post:</b>
<%= @blog.post %>
</p>
這裏是在博客控制器的創建代碼:
Here is the create code:
# POST /blogs
# POST /blogs.json
def create
@blog = Blog.new(params[:blog])
@blog.user_id = current_user
respond_to do |format|
if @blog.save
format.html { redirect_to @blog, notice: 'Blog was successfully created.' }
format.json { render json: @blog, status: :created, location: @blog }
else
format.html { render action: "new" }
format.json { render json: @blog.errors, status: :unprocessable_entity }
end
end
end
你的'has_one:users'不應該是單數嗎?換句話說,班博客應該有'has_one:user'。 – Zajn