我有以下型号:
g <- make_ring(10) %>% set_vertex_attr("name", value = LETTERS[1:10])
ui <- fluidPage(
titlePanel("Delete vertices in graph"),
sidebarLayout(
sidebarPanel(
selectInput("vertexToDelete", "Vertex to delete", choices=V(g)$name),
actionButton("goButtonDelete", "Evaluate")
),
# Show a plot of the graph
mainPanel(plotOutput("graphPlot"))
)
)
server <- function(input, output, session) {
my <- reactiveValues(g=g)
observeEvent(input$goButtonDelete,{
my$g <- delete_vertices(my$g, input$vertexToDelete)
updateSelectInput(session, "vertexToDelete", choices=V(my$g)$name)
})
output$graphPlot <- renderPlot(plot(my$g))
}
shinyApp(ui = ui, server = server)
此工作正常,并允许人们注册该网站。但是,我接着定义了以下路线:
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
现在,该应用程序仍将运行,但当我尝试访问&#39; / users / all&#39;时,我会收到#34;此网站无法访问&#34;和以下终端错误:
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="test@googlemail.com" @password_digest=<not loaded>>
内部用户/ all.erb:
get 'users/all' do
@users = User.all
erb(:'users/all')
end
这是为什么?
感谢所有帮助。
感谢。
答案 0 :(得分:4)
在一天结束时,您的控制器需要返回一个字符串。 erb :'users/all'
返回一个字符串。
让我们回过头来看看你现有的代码,特别是这个:
@users.each do |user|
user.name
end
这里的街区基本没有效果; each
不会返回修改后的数组(也许您正在寻找map
?)
虽然你已经有了将这个逻辑移到视图中的正确想法,但我只是指出原始代码在很多方面都是错误的。