2014-11-15 228 views
0

所以我正在寫一個發生器。在轉義字符串中轉義字符串?

我想讓生成器創建'模型'名稱。如

rails g my_custom_generator foo 

rails g my_custom_generator bar 

基於導軌,我可以創建用於使用#{CLASS_NAME}所選名稱的模型。

根據您的選擇,{class_name}將成爲foo或bar。

還在我身邊嗎?大。我的問題如下:

我想生成一個編輯表單,並且我想在已經轉義的字符串中填寫模型名稱。例如:

f.input :name, value="#{@model.name}" 

我上面的代碼已經看起來像這樣。我想現在翻譯發電機像

f.input :name, value=#"{@#{class_name}.name}" 

但這並不行。有誰知道如何逃脫已經逃脫的字符串...?採取什麼方法。

回答

0

請記住,你能避免使用單引號轉義:

"#{@model.name}" 
# => "Test" 
'#{@model.name}' 
# => "\#{@model.name}" 

所以,如果你打算推遲評價一個圓,你應該逃脫這樣或使其更接近字面的版本:

"\#{@#{class_name}.name}" 

這可以被評估兩次,雖然我不確定它會完全按照計劃在發電機系統中工作。你必須測試它。

0

各種源(thisthis)表明從由ERB處理被生成的文件,因此使用在這些文件中Ruby的串內插的<%=外面和%>是無用的。

拼接它像這樣:

f.input :name, value=#"{@<%= class_name %>.name}"