2011-06-06 86 views
0

我托管的服务器上运行的Rails 2.3.5,并且无法升级到3如何让Rails select()工作?

我有一个数据库,它有卡通与iddatetitle列表。我可以使用文本链接浏览它们,我也希望能够使用下拉菜单select进行导航,但我无法使select标签正常工作。这不是创建新元素的表单。而form(空)显示,select标记不显示,甚至没有空的select标记。

这是我有:

* comics_controller.rb *

class ComicsController < ApplicationController 
    before_filter :get_all_comics 

    def get_all_comics 
    @comics=Comic.find(:all, :order => "date DESC") 
    end 

    def view 
    if params[:id].nil? 
    @[email protected] 
    @[email protected][1] 
    else 
     @comic=Comic.find(params[:id]) 
     @prev=Comic.find(:first, :conditions => ["date < ?", @comic.date], 
          :order => "date DESC") 
     @next=Comic.find(:first, :conditions => ["date > ?", @comic.date], 
           :order => "date ASC") 
    end 
    end 

end 

漫画/ view.html.erb

<% form_for :comics, :url => { :action => "view" } do |f| 
    f.select(:id,Comic.all,:prompt => true) 
end %> 
<img src="directory/<%= @comic.filename %>" /> 
<p class="title"><%= @comic.title %></p> 
<p class="date"><%= @comic.date %></p> 
<% unless @prev.nil? %> 
    <a href="<%= @prev.id %>">Previous</a> 
<% end 
    unless @next.nil? %> 
    <a href="<%= @next.id %>">Next</a> 
<% end %> 
+0

对不起,无法回答你的问题。但我会说使用旧版本来熟悉框架是一个坏主意。我建议你尝试heroku.com托管。您可以免费使用它进行开发和测试。 – bassneck 2011-06-06 17:33:17

回答

1
<% form_for ... do |f| %> 
<%= f.select(...) %> 
<% end %> 

编辑:我建议你也在某处添加<%= submit_tag %>

+0

有它!谢谢!起初我甚至都不知道你在说什么 - 你可能想解释你在做什么(不是说很难弄清楚,但是我忽略了等号)。 – 2011-06-06 18:38:30

0

我觉得收藏您使用需要一点格式

f.select :id, Comic.all, :prompt => true 

的尝试

f.select :id, Comic.all.map { |c| [c.title, c.id] }, :prompt => true 

# collection should resemble this format 
[ 
    ["Batman", 1], 
    ["Superman", 2], 
    ... 
] 
+0

我在某处看到过类似的东西,我试过了(虽然我认为这是一个c字,而不是“地图”)。没有运气。我刚刚尝试过,也没有运气。它没有破裂,但它没有做任何事情。仍然没有选择出现。 – 2011-06-06 18:35:42

+0

是的,对不起,我忽略了其他答案提到的所有显而易见的原因。 – nowk 2011-06-06 18:45:11

3

这里的基本问题是块标记所使用。

Rails使用两种类型的模板标签:<%=用于任何需要评估并返回给客户端的内容,而<%用于不向客户端返回任何内容的控制语句。

还要注意的是,与<%=一起输出的Rails 2中的任何内容都不能安全地转义,您应该使用<%= h @comic.title %>(h用于html转义)。但是,如果您在Rails 3中使用简单的<%=语法,它将为您处理转义。

如果你从头开始学习框架,你可能会更好地转向Rails 3。

+0

谢谢!不幸的是,我现在无法切换到Rails 3。但这是一个很好的解释。 – 2011-06-06 18:42:07