2017-07-20 14 views
1

我試圖在消息模型中插入字符串。模型中的軌道字符串插值

我想將一個字符串'消息'和一個選擇media_url合併爲一個:body,這樣我就可以將包含消息和鏈接的文本消息進行文本連接。任何幫助插值將不勝感激。

我正在嘗試做一個before_create來抓取兩個字段,並將它們組合成保存爲body的第三個字段。

我現在的結果產生:

MESSAGE#{@message.media_url}

message.rb

before_create do 
    self.body = 'MESSAGE' + '#{@message.media_url}' 
end 

new.html.erb

<%= f.text_field :body, :value => "body" ,:class => 'form-control ' %> 

<%= f.select :media_url, Url.order('name asc').all.collect { |u| [u.name, (u.sanitized_url + u.short_url)] }, { class: 'form-control' } %> 

假設輸出類似... Message和www.google.com/EdRds這是來自選擇框的值。

謝謝

回答

0

你得到了MESSAGE#{@message.media_url}結果,因爲你在單引號'',那一定是雙引號之間的包裹你的#{}

你可以嘗試只插,不串聯:

before_create do 
    # Not an instance variable, the media_url attribute from the object itself 
    self.body = "MESSAGE #{self.media_url}" 
end 

因爲'#{@message.media_url}'將不作爲插值工作,即必須用雙引號"",並'MESSAGE' +被串接@message.media_url值,這樣你就可以換全部用雙引號和{}中的變量值。

+0

謝謝您的輸入。它有幫助。但是我得到了 未定義的方法'media_url'爲nil:NilClass。 media_url沒有值,因爲該對象尚未創建。有沒有一種方法可以在創建之前從media_url獲取該值?或者在創建之後進行某種操作? – Jrinard

+0

對不起,我沒有看到,在你的模型中,然後嘗試通過'self','「MESSAGE#{self.media_url}」'來訪問你的'media_url'值。 –

+0

完美無缺!非常感謝你。 – Jrinard