0
我有以下型號:爲什麼此代碼在控制器內部使用時會拋出錯誤,而不是視圖?
class User
include DataMapper::Resource
property :id, Serial
property :name, String, required: true
property :email, String, required: true, unique: true
property :password_digest, Text
attr_reader :password
attr_accessor :password_confirmation
validates_confirmation_of :password
validates_format_of :email, as: :email_address
has n, :victories
這工作得很好,並允許人們登錄到網站。然而,我則定義了以下路線:現在
get 'users/all' do
@users = User.all
@users.each do |user|
user.name
end
end
,應用程序將繼續運行,但是當我試圖訪問「/用戶/所有」,我與「該網站無法達到」迎接和以下終端錯誤:
ERROR Rack::Lint::LintError: Body yielded non-string value #<User @id=1 @name="Iain K" @email="[email protected]" @password_digest=<not loaded>>
當我在然而視圖包裹這樣的邏輯,它的工作原理:
get 'users/all' do
@users = User.all
erb(:'users/all')
end
內的用戶/ all.erb:
<% @users.each do |user| %>
<li>
Name: <%= user.name %>
</li>
<% end %>
這是爲什麼?
所有幫助表示讚賞。
謝謝。
我意識到我用'.each'錯誤在這裏。如果我說'print user.name',那會很好,對嗎? (我不是說它會解決這個特定的錯誤)。感謝您的幫助,Max。 – IainK
是的,如果你想打印每一行都有道理。但不清楚你在原始代碼中想做什麼。 –
嘿,只是一個後期的後續問題:爲什麼我在視圖中應用這個邏輯時不需要指定'print'?再次感謝。 – IainK