我的Ruby on Rails項目中有一個對象(工具)數據庫。當我使用「rails dbconsole」和Rails認爲儘管控制檯顯示數據庫,類仍爲零
select * from tools;
它返回工具對象的整個列表。但是當我嘗試查看下面的頁面時,它給了我一個錯誤。
頁:
<!DOCTYPE html>
<html lang="en">
<%= stylesheet_link_tag "tools", :media => "all" %>
<body>
<%= @tools.each do |tool| %>
<%= link_to(tool(image_tag.image_url)) %>
<% end %>
</body>
</html>
錯誤:
undefined method `each' for nil:NilClass
當我修改代碼,添加對是否爲零對象的說法,頁作品(不顯示任何工具)。
<% if @tools.nil? %>
<% else %>
<%= @tools.each do |tool| %>
<%= link_to(tool(image_tag.image_url)) %>
<% end %>
<% end %>
因此,似乎@tools沒有任何值,但是當我在dbconsole中查看它時,那裏有工具。我無法弄清楚這一點,而且我花了幾天的時間搜索答案,所以任何和所有的想法都會受到歡迎!
編輯:添加tools_controller.rb
class ToolsController < ApplicationController
before_filter :check_authentication
def check_authentication
unless session[:user_id]
session[:intended_action] = action_name
session[:intended_controller] = controller_name
redirect_to new_session_url
end
end
def new
@tool = Tool.new
respond_to do |format|
format.html # new.html.erb
format.json { render :json => @tool }
end
end
def show
end
def index
@tools = Tool.all
end
# GET /tools/1/edit
def edit
@tool = Tool.find(params[:id])
end
# POST /tools
# POST /tools.json
def create
@tool = Tool.new(params[:tool])
respond_to do |format|
if @tool.save
format.html { redirect_to @tool, :notice => 'tool was successfully created.' }
format.json { render :json => @tool, :status => :created, :location => @tool }
else
format.html { render :action => "new" }
format.json { render :json => @tool.errors, :status => :unprocessable_entity }
end
end
end
end
請包含您的控制器代碼,這可能是問題的根源。 –
我已經添加了控制器代碼。謝謝! – camdroid
「但是,當我嘗試查看以下頁面時<< - 您在這裏討論哪個視圖?如果是'index'視圖,那麼這應該起作用,因爲你正確地分配了'@tools = Tool.all'。如果是任何其他視圖,那麼它將不起作用。 –