我在控制器中执行了一个操作,该操作将api调用发送到第三方应用程序。 有效负载的一部分是应用程序存储的字符串格式的js代码。
这是一个例子:
def store_code_on_app
myCode = "
function hello(you){
console.log("hello", you);
}
"
RestClient.post(
"http://theapp.com/codes/create",
{
code: myCode
}
)
end
由于我的实际代码很长,以后为了更好地管理多个代码,我想将这些代码存储在rails应用程序中某个文件夹内的文件中,然后从控制器中调用它。我希望使用适当的扩展名(mycode.js)保存文件,以便更轻松地进行处理和调试。
您如何建议我这样做?可能是通过要求或包含文件?也许在lib文件夹中?
答案 0 :(得分:2)
如果您不希望任何动态内容,则可以将其保存在任何位置并使用File.read
加载。
lib / something / code.js
function hello(you){
console.log("hello", you);
}
控制器
def store_code_on_app
myCode = File.read("#{Rails.root}/lib/something/code.js")
RestClient.post(
"http://theapp.com/codes/create",
{
code: myCode
}
)
end
如果它是动态的,您可以使用render_to_string
,但对此我不确定,但是可以使用类似的方法
app / views / shared_js_templates / code.js.erb
function <%= console_string %>(you){
console.log("<%= console_string %>", you);
}
控制器
def store_code_on_app
myCode = render_to_string(
'shared_js_templates/code.js.erb',
layout: false,
locals: { console_string: 'hello' }
)
RestClient.post(
"http://theapp.com/codes/create",
{
code: myCode
}
)
end
借助动态功能,您可以执行以下操作:
app / views / shared_js_templates / code.js.erb
<% 10.times do |index| %>
function hello<%= index %>(you){
console.log("hello<%= index %>", you);
}
<% end %>