我正在使用content_for和yeild将javascript文件注入我的布局底部,但我想知道包含内联javascript的最佳做法是什么.具体来说我想知道把脚本类型声明放在哪里:
<% content_for :javascript do %>
<script type="text/javascript"> ... </script>
<% end %>
Run Code Online (Sandbox Code Playgroud)
要么
<% content_for :javascript do %> ... <% end %>
<script type="text/javascript">
<%= yield :javascript %>
</script>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我现在正在使用第一个选项,并想知道包含多个是否不好
...一个视图中的声明.有时我会偏袒这一点.
我正在尝试保存用户在注册时来自的网站.现在我的ApplicationController中有一个before_filter:
before_filter :save_referer
def save_referer
unless is_logged_in?
session['referer'] = request.env["HTTP_REFERER"] unless session['referer']
end
end
Run Code Online (Sandbox Code Playgroud)
然后,当创建用户时,它会检查此会话变量并将其设置为nil.有时这不起作用,我担心使用像这样的会话可能会发生一些意想不到的事情.有没有人有更好的方法?或者也许是一些输入?
编辑:这是我用来保存引用者的逻辑:
def create
@user = User.new(params[:user])
if @user.save_with(session[:referer])
....
end
Run Code Online (Sandbox Code Playgroud)
用户
def save_with(referer)
self.referer = referer unless referer == "null"
self.save
end
Run Code Online (Sandbox Code Playgroud)
有什么理由不起作用吗?
我想知道在rails视图中将变量传递给JavaScript函数的最佳实践是什么.现在我做的事情如下:
<% content_for :javascript do %>
<script type="text/javascript">
Event.observe(window, 'load', function(){
js_function(<%= @ruby_array.to_json %>, <%= @ruby_var %>); )}
</script>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?
我正在尝试删除括号内的文本(以及括号本身),但是在括号内有圆括号的情况下遇到问题.这是我正在使用的方法(在Ruby中):
sentence.gsub(/\(.*?\)/, "")
Run Code Online (Sandbox Code Playgroud)
这工作正常,直到我有一句话,如:
"This is (a test (string))"
Run Code Online (Sandbox Code Playgroud)
然后上面的扼流圈.任何人都知道如何做到这一点?我完全难过了.
我试图在纯 Ruby 中将 UTC 时间“2018-04-02T14:30:00Z”转换为 EST。我注意到以下差异。如果我使用 Rails 解析 UTC 时间,然后添加 EST zone_offset,我得到的时间与使用“in_time_zone”助手的时间不同。9:30 与 10:30。
2.2.4 :001 > t = Time.parse "2018-04-02T14:30:00Z"
=> 2018-04-02 14:30:00 UTC
2.2.4 :002 > t + Time.zone_offset("EST")
=> 2018-04-02 09:30:00 UTC
2.2.4 :003 > t.in_time_zone('Eastern Time (US & Canada)')
=> Mon, 02 Apr 2018 10:30:00 EDT -04:00
Run Code Online (Sandbox Code Playgroud) 我有一种情况,我需要将带有撇号的字符串传递给javascript函数.然后,此函数接受字符串并使用它在DOM中按id查找元素.举个例子,我需要打电话:
showElement('what's')
function showElement(element_id){
document.getElementById(element_id).style.display = "block";
}
Run Code Online (Sandbox Code Playgroud)
我尝试像showElement('what's')一样逃避撇号,但这似乎没有用.这有可能吗?
我有许多模型将单词存储为字符串,每个单词用空格分隔.我已经定义了模型方法来删除和添加单词到字符串,每次相应地更新单词的大小或数量.某处出现错误,因为尺寸有时会变成负数.我想知道,在rails中测试这种情况的最佳方法是什么.理想情况下,我想编写一个测试,允许我添加一些单词并删除它们,同时每次验证大小的正确值.谢谢.
我知道你可以在Rails 3中添加一个图像作为电子邮件的附件
def email_image(email)
attachments["img"] = File.read('/path to image')
mail(:to => email)
end
Run Code Online (Sandbox Code Playgroud)
但有没有办法从网址附加图像而不是本地保存的图像?我想附上一个用回形针保存在S3上的图像.有没有一种简单的方法可以做到这一点,还是我需要先下载图像?
有没有办法编辑nokogiri元素的文本?我有一个包含list元素(<li>)的nokogiri元素,我想在保留<li>html的同时从文本中删除一些字符.具体来说,我想删除文本中的前导":"字符(如果存在).它看起来不像nokogiri元素的text =方法,但我只是想确定.
也许我将不得不使用正则表达式?如果是这样,如果它看起来如下,我将如何删除前导":":
<li>: blah blah blah</li>
Run Code Online (Sandbox Code Playgroud)
ps我正在使用红宝石.
我正在使用STI,我想知道,我是否必须为每个型号配备一个单独的控制器?我有一种情况,我只在STI关系中使用一个模型的创建和编辑操作,但如果我尝试为其执行表单,则会出现"未定义的方法"错误.更具体地说,我有两个继承自List的模型:
class RegularList < List
class OtherList < List
Run Code Online (Sandbox Code Playgroud)
我有一个处理这些操作的列表控制器,但我只使用表单创建带有RegularList的新模型.即我使用form_for创建新的List对象的唯一情况是使用RegularList.我想做的是:
class ListsController < ApplicationController
def new
@list = RegularList.new
end
Run Code Online (Sandbox Code Playgroud)
否则创建新列表的路径看起来像regular_list/new,但我希望它只是list/new.思考?
编辑:问题是当我使用上面的代码时,我得到一个'未定义的方法'错误.我的观点如下:
...所以在Lists控制器中使用RegularList对象似乎存在一些问题,这是我试图解决的主要问题.对不起,我意识到这不是最清楚的解释.
现在我看到一个句子是否包含一个特定的单词,通过将句子分成一个数组然后做一个包含来查看它是否包含单词.就像是:
"This is my awesome sentence.".split(" ").include?('awesome')
Run Code Online (Sandbox Code Playgroud)
但我想知道用短语做这个的最快方法是什么.就好像我想查看句子"这是我真棒的句子".包含短语"我很棒的句子".我正在抓句子并比较大量的短语,所以速度有点重要.
我有List对象,如下所示:
www.mysite.com/lists/123
其中123是列表的id.我想要做的是添加列表标题的网址,以便它提供更多信息(谷歌或其他).所以我希望它看起来像:
www.mysite.com/lists/123/title-of-list-number-123
你如何添加这样的网址?如果您只输入:www.mysite.com/lists/123没有标题,是否应该找到标题然后重定向到新路线?
嘿,我使用reg表达式从ruby字符串中删除括号和它们之间的内容.问题是这有时在逗号之前留下空格.我不知道如何去除这个空间.我一直在玩以下但它没有工作:
@char_count = 0
sentance.each_char{|char|
if char == ","
if sentance[@char_count-1] == 32
sentance[@char_count-1] = ""
end
end
@char_count += 1
}
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏!
编辑:sentance.gsub!(/,/,',')运行良好,但现在我意识到有些地方在逗号之前有多个空格.我也需要考虑这个场景.
ruby ×5
javascript ×3
regex ×3
string ×3
actionmailer ×1
content-for ×1
email ×1
escaping ×1
http-referer ×1
nokogiri ×1
prototypejs ×1
routing ×1
session ×1
testing ×1
time ×1