我正在尝试向用户发送flash消息和欢迎通知,如果这是他们第一次评论的话; 基本上,这样的事情:
class CommentObserver < ActiveRecord::Observer
def after_save(comment)
if comment.user.new?
Mailer.deliver_welcome_package(comment)
flash[:notice] = "Welcome! We just delivered a welcome package to your email"
end
end
end
Run Code Online (Sandbox Code Playgroud)
我不确定在用户创建第一条评论后我应该如何为用户显示该Flash消息.我应该将闪存消息放入控制器(附加"if comment.user.new?")还是有办法更有效地显示闪存消息?
对于一个动作,是否使用50个if-else语句过于耗费资源?
我正在做这样的事情:
if team.players.count > 1
assign_team_type(..)
elsif team.players.count > 3
assign_team_type(..)
...
etc.
...
end
Run Code Online (Sandbox Code Playgroud)
另外,在控制器中的create action中放置50个if-else语句而不是after_create方法会更有效吗?或者使用case switch语句更有效率,还是完全避免使用它?
编辑:感谢您的快速回复!该代码用于社区体育锦标赛,根据该团队的球员数量分配球队.我正在尝试根据向该团队添加的玩家数量,为每个团队编写一个团队类型.因此,有1个玩家,3个玩家,5个玩家,7个玩家等的团队,最多200个玩家,总共需要50个if-else语句.
这些陈述发生在players_controller中,在用户访问http:// localhost/players/new之后,添加一个玩家,然后应用程序根据该团队当前有多少玩家决定分配他或她的团队的团队.它非常简单(一个基本的CRUD应用程序只需要这50个if-else语句)
models:
Team (has_many :players)
Player (belongs_to :team)
scaffold team name:string team_type:string
scaffold player team_id:integer name:string
Run Code Online (Sandbox Code Playgroud)
那就是它:)
我正试图从ruby中的电子邮件地址中提取信息:
Email: Joe Schmo <joeschmo@abc123.com>
Run Code Online (Sandbox Code Playgroud)
得到这三个变量:
name = ?
email = ?
domain = ?
Run Code Online (Sandbox Code Playgroud)
我试过到处寻找,但似乎无法找到如何正确地进行搜索.这是我到目前为止所拥有的:
the_email_line = "Email: Joe Schmo <joeschmo@abc123.com>"
name = (/^Email\: (.+) <(.+)>@[A-Z0-9.-]+\.(.+)/).match(the_email_line)[1]
email = (/^Email\: (.+) <(.+)>@[A-Z0-9.-]+\.(.+)/).match(the_email_line)[2]
domain = (/^Email\: (.+) <(.+)>@[A-Z0-9.-]+\.(.+)/).match(the_email_line)[3]
Run Code Online (Sandbox Code Playgroud)
关于如何正确获得这三个变量的任何想法?
我正在使用Ubuntu 10.04.在终端中,当我去我的应用程序并输入(不使用前面的"红宝石")时:
script/generate controller recipes
Run Code Online (Sandbox Code Playgroud)
我收到" 权限被拒绝 "错误.但是当我使用它时:
ruby script/generate controller recipes
Run Code Online (Sandbox Code Playgroud)
一切都按预期工作.当我试图生成控制器时(即使用"脚本/生成控制器配方"应该正常工作),我是否有必要对Ubuntu做一些事情以使前置的"ruby"不必要?
例如,如果我有一个 Time.now,我如何将其转换为友好的 url 字符串?
Time.now.some_method_here => some_url_friendly_string_here
Run Code Online (Sandbox Code Playgroud)
我相信有一个内置的 Ruby 方法可以做到这一点,但我似乎无法在 Google 上找到它。有任何想法吗?
当用户从不同列表中拖动项目时,我正在尝试将数据保存到Rails中的MySQL数据库.我正在使用下面的Jquery脚本和HTML:
<script>
$(document).ready(function() {
$("#draggable").draggable( { connectToSortable: 'ul#myList', helper:'clone' } );
$("#myList").sortable();
});
</script>
Run Code Online (Sandbox Code Playgroud)
HTML:
<ul>
<li id="draggable">Drag me to myList</li>
</ul>
<ul id="myList">
<li id="item-1">item 1</li>
<li id="item-2">item 2</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我一直在谷歌搜索过去几个小时,但似乎无法找到如何使用Rails在多个列表之间保存数据.任何的想法?
我希望从他们的子域以及他们的自定义域路由用户的页面.例如,考虑三个域:
app.com
user1.app.com
user1.com
Run Code Online (Sandbox Code Playgroud)
访问者应该能够在应用程序域(user1.app.com)的子域以及用户的自定义域(user1.com)中查看用户的页面.也就是说,访问者在访问"app.com"的任何子域或非"app.com"的根域时将访问用户页面.
我该如何设置路线呢?
也许这个伪代码的内容:
match "/", :to => "user_page#show", :constraints => { :subdomain => /.+/ OR :domain => NOT(app.com) }
Run Code Online (Sandbox Code Playgroud)
你怎么看?
我想剥离这个html块:
<form>
<h3>Some Title</h3>
<div class="grab_this_content">
This sentence is what I want remaining.
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
这就是这个:
This sentence is what I want remaining.
Run Code Online (Sandbox Code Playgroud)
我知道如何剥离表单标签,如下所示:
$form = $('form');
$form.replaceWith($form.html());
Run Code Online (Sandbox Code Playgroud)
...导致:
<h3>Some Title</h3>
<div class="grab_this_content">
This sentence is what I want remaining.
</div>
Run Code Online (Sandbox Code Playgroud)
但是这仍然留给h3标签以及html块中的div(div class ="grab_this_content")标签,我想要剥离它.关于如何剥离上面的HTML块并留下我想留下的句子的任何想法?
我将嵌套资源"resources:comments"添加到许多父资源中,如下所示(使用Rails 3):
resources :cusines do
resources :comments
end
resources :recipes do
resources :comments
end
resources :chefs do
resources :comments
end
resources :countries do
resources :comments
end
etc., etc., etc.
Run Code Online (Sandbox Code Playgroud)
由于我有大约10个像上面这样类似的,我觉得它不是很干.是否有可能以某种方式干掉我的路线,将所有需要资源的评论资源嵌套(也就是说,我不必每次都输入"资源:评论")?
我有一个after_initialize方法,如果我没有更新记录,我只想调用它.例如,类似以下内容:
after_initialize :set_some_name, :unless => :updating?
Run Code Online (Sandbox Code Playgroud)
例如,Task.find(123).title应该调用该after_initialize方法.Task.find(123).save!(:title => "something")应该不是调用after_initialize方法.
当然是"更新?" Rails中不存在方法.是否有相同的方法或方法?