2011-06-06 69 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