2012-11-22 23 views
3

我有一個表單,我的用戶輸入一個人回覆婚禮邀請。他們輸入一個名稱,菜單選項,然後選擇:參加 - 是/否 - 然後我會計算真實和錯誤的標籤數量,以便用戶可以看到有多少人蔘加或不參加。如何將我的布爾輸出更改爲ruby中的字符串值

我的問題是在表本身。在RSVP專欄坐下的時候,我剛剛得到了'真'或'假'。無論如何,在Ruby中,我可以將其更改爲我的index.html.erb的字符串值?

指數

<% @replies.each do |reply| %> 
    <tr> 
    <td><%= reply.name %></td> 
    <td><%= reply.menu %></td> 
    <td><%= reply.rsvp %></td> 
    <td><%= link_to 'Show', reply, class: "btn" %></td> 
    <td><%= link_to 'Edit', edit_reply_path(reply), class: "btn" %></td> 
    <td><%= link_to 'Delete', reply, method: :delete, data: { confirm: 'Are you sure?' }, class: "btn btn-danger" %></td> 
    <td><%= reply.user.full_name %></td> 
    </tr> 
<% end %> 

reply.rb

class Reply < ActiveRecord::Base 
    attr_accessible :menu, :name, :rsvp, :user_id 
    belongs_to :user 

    def self.find_attending 
    Reply.where(:rsvp => "true").count 
    end 

    def self.find_not_attending 
    Reply.where(:rsvp => "false").count 
    end 
end 

_form.html.erb

<%= f.input :user_id, collection: User.all, label_method: :full_name, :label => 'Added By' %> 
<%= f.input :name, :label => 'Person(s) Name' %> 
<%= f.input :menu, :label => 'Menu Choice' %> 
<%= f.collection_radio_buttons :rsvp, [[true, 'Attending'] ,[false, 'Not Attending']], :first, :last %> 

db

class CreateReplies < ActiveRecord::Migration 
    def change 
    create_table :replies do |t| 
     t.string :name 
     t.text :menu 
     t.boolean :rsvp, :default => false 

     t.timestamps 
    end 
    end 
end 

我對Ruby很新,任何指針將不勝感激。非常感謝。

+0

這是一個很好的問題,但它提供的信息要多得多。您可以考慮使用示例Ruby代碼而不是實際的Rails代碼。 – emery

回答

5

只需使用三元:

reply.rsvp ? "true" : "false" 

替換爲「真」,並要顯示什麼字符串「假」。

+0

所以我在這裏學到一些東西,你能解釋一下嗎?它只是說明了真/假值,基本上這裏是爲頁面分配一個打印值而不是標準的真/假?它是一種真正的享受,謝謝! – Doidgey

+0

我不確定你的意思。 'reply.rsvp'求值爲'true'或'false'(布爾值)。當你應用三元組時,你說如果*值爲真,返回下一個值(這裏是字符串「」true「'),如果它是'false',則返回':'後面的值這裏是字符串'「false」')。 –

+0

是的,我沒有把這個過濾掉,但現在我明白了,謝謝 – Doidgey

7

"#{reply.rsvp}"怎麼樣?似乎更清潔,不是嗎?

+1

這種情況不可取的一種情況是在使用foodcritic驗證廚師食譜或資源時。 FoodCritic有時會抱怨說這是'不必要的插值',而且一些工程師/團隊在涉及到任何標準時都非常嚴格要求你能夠做什麼,不能忽視什麼。 雖然我同意你的看法。這是我希望儘可能做到這一點的方式。 –

+0

我認爲這應該是真正的答案。在處理動態對象時,如果要評估模板文件,則不需要將「對象」轉換爲字符串「false」。這將解釋這種差異。 –

相關問題