我正在尝试创建一个销毁链接到我的用户控制器,我也在使用设计.
这是我的代码 -
<%= link_to 'Delete User?', child, :confirm => "Are you sure you want to delete #{child.full_name}?", :method => :delete, :class => "user-additional", :style => "font-size:12px;font-weight:normal;" %>
Run Code Online (Sandbox Code Playgroud)
def destroy
if @user = User.find(params[:id])
@user.destroy
respond_to do |format|
format.html { redirect_to account_index_path }
format.xml { head :ok }
end
end
end
Run Code Online (Sandbox Code Playgroud)
devise_for :users
resources :users, :except => [:new]
Run Code Online (Sandbox Code Playgroud)
该链接转换为localhost:3000/users/10
单击此按钮将打开用户显示而不是删除它们
有任何想法吗 ?
我应该在Rails应用程序中使用哪两个:
DateTime.now or Time.now
Run Code Online (Sandbox Code Playgroud)
在申请中使用两者有什么危害吗?
在上述(now)示例的情况下,两者之间是否会有任何差异?(在我目前的系统中,他们都显示相同的时间)
给我一个名为的模型Apple并且它有一个控制器ApplesController,路由是:
resources :apples
apples GET /apples (.:format) {:controller=>"apples ", :action=>"index"}
new_apple GET /apples /new(.:format) {:controller=>"apples ", :action=>"new"}
edit_apple GET /apples /:id/edit(.:format) {:controller=>"apples ", :action=>"edit"}
Run Code Online (Sandbox Code Playgroud)
我想保持所有代码相同,除了在URL中,"apple"将被"car"替换.因此,URL /apples/new将成为/cars/new.
有没有办法在不触及应用程序中的任何其他代码的情况下执行此操作?(即在应用内部,它仍然apple和ApplesController)
我尝试过:as选项:
resources :apples, :as => "cars"
cars GET /apples (.:format) {:controller=>"apples ", :action=>"index"}
new_car GET /apples /new(.:format) {:controller=>"apples ", :action=>"new"}
edit_car GET /apples /:id/edit(.:format) {:controller=>"apples ", :action=>"edit"}
Run Code Online (Sandbox Code Playgroud)
但这只改变了路线的"名称",而不是URL(所以new_apple_path变成了new_car_path,但new_car_path仍然指向/apples/new而不是/cars/new)
我偶然碰巧在我看到的一个源代码中找到了这个.所以,我在这里给出了一个类似的小例子.
在文件test.h中:
#include<iostream>
class test{
int i;
public:
test(){}
//More functions here
};
Run Code Online (Sandbox Code Playgroud)
在test.cpp文件中:
#include "test.h"
int main()
{
test test1;
test::test test2;
test::test::test test3;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
首先,是否有理由宣布test2这种方式?其次,这个代码在g ++ 4.4.3版和更低版本中编译得很好.C++标准中有什么东西说,当不需要解析范围时,范围解析运算符会被忽略吗?
当我们<%= f.datetime_select :somedate %>在表单中使用时,它会生成如下HTML:
<select id="some_date_1i" name="somedate1(1i)"> #year
<select id="some_date_2i" name="somedate1(2i)"> #month
<select id="some_date_3i" name="somedate1(3i)"> #day
<select id="some_date_4i" name="somedate1(4i)"> #hour
<select id="some_date_5i" name="somedate1(5i)"> #minute
Run Code Online (Sandbox Code Playgroud)
提交该表单后,将somedate1(<n>i)收到以下值:
{"date1(1i)"=>"2011", "date1(2i)"=>"2", "date1(3i)"=>"21", "date1(4i)"=>"19", "date1(5i)"=>"25"}
Run Code Online (Sandbox Code Playgroud)
如何将其转换为DateTime对象?我可以编写自己的方法来执行此操作,但由于Rails已经能够进行转换,我想知道是否可以调用Rails方法为我执行此操作.
问题是,我不知道在哪里寻找那种方法.
PS.我最终试图解决我遇到的另一个问题,这个问题是尝试找到另一个问题的解决方案的第一步.
我是一个Ruby nuby(也是Stack Overflow的新手),正在研究Michael Hartl的Rails教程,突然间我的开发服务器无法加载并继续退出.控制台也不会加载和Rspec spec /产生错误/异常.我包括终端的一些输出,非常感谢您的帮助.
Exiting
/Users/ameedachowdhury/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_dispatch/routing/mapper.rb:164:in `default_controller_and_action': missing :action (ArgumentError)
from /Users/ameedachowdhury/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_dispatch/routing/mapper.rb:68:in `normalize_options!'
from /Users/ameedachowdhury/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_dispatch/routing/mapper.rb:51:in `initialize'
from /Users/ameedachowdhury/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_dispatch/routing/mapper.rb:261:in `new'
from /Users/ameedachowdhury/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_dispatch/routing/mapper.rb:261:in `match'
from /Users/ameedachowdhury/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_dispatch/routing/mapper.rb:1112:in `match'
from /Users/ameedachowdhury/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_dispatch/routing/mapper.rb:1297:in `match'
from /Users/ameedachowdhury/rails_projects/railstutorial/config/routes.rb:11:in `block in <top (required)>'
from /Users/ameedachowdhury/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_dispatch/routing/route_set.rb:233:in `instance_exec'
from /Users/ameedachowdhury/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/actionpack-3.0.3/lib/action_dispatch/routing/route_set.rb:233:in `draw'
from /Users/ameedachowdhury/rails_projects/railstutorial/config/routes.rb:1:in `<top (required)>'
from /Users/ameedachowdhury/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:235:in `load'
from /Users/ameedachowdhury/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:235:in `block in load'
from /Users/ameedachowdhury/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:225:in `block in load_dependency'
from /Users/ameedachowdhury/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:596:in `new_constants_in'
from /Users/ameedachowdhury/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:225:in `load_dependency'
from /Users/ameedachowdhury/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/activesupport-3.0.3/lib/active_support/dependencies.rb:235:in `load'
from /Users/ameedachowdhury/.rvm/gems/ruby-1.9.2-p0@rails3tutorial/gems/railties-3.0.3/lib/rails/application.rb:127:in `block in reload_routes!'
from …Run Code Online (Sandbox Code Playgroud) 我需要根据表达式是真还是假来在各种语言中显示"是"或"否".目前我这样做:
fr:
"yes": Oui
"no": Non
Run Code Online (Sandbox Code Playgroud)
def t_boolean(expression)
(expression) ? t("yes") : t("no")
end
Run Code Online (Sandbox Code Playgroud)
Valid: <%= t_boolean(something.is_valid?) %>
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做到这一点?
Rails是否已经有像这样的真/假翻译?
在application.rb,它说:
将Time.zone默认设置为指定区域,并将Active Record自动转换为此区域.运行"rake -D time"以获取用于查找时区名称的任务列表.默认为UTC.
但是设置config.time_zone = 'Central Time (US & Canada)'或者config.time_zone = 'Eastern Time (US & Canada)'没有效果 - created_at模型中的字段是以UTC格式保存的.
config.time_zone只是让rails知道你的服务器被设置为这个时区,所以当它将日期写入数据库时,它可以正确地将它转换为UTC.
如果这是真的,那么它为什么,当我的系统时间Pacific Time (US & Canada)和config.time_zone = 'Central Time (US & Canada)'或config.time_zone = 'Eastern Time (US & Canada)',该created_at时间是正确的UTC?它应该不正确吗?!
因为,如果PST时间是晚上8点,则EST是晚上11点,UTC是凌晨4点.假设Rails确实如此Time.now,那将是晚上8点.我们告诉Rails服务器在EST中.因此,就Rails而言,晚上8点将是EST时间,然后UTC将是UTC时间上午5点,这将是不正确的(因为实际时间是太平洋标准时间晚上8点/美国东部时间晚上11点,即UTC时间上午4点)
这里发生了什么?
这将返回最大信号值,而不是完整的记录:
self.prices.maximum(:price_field)
Run Code Online (Sandbox Code Playgroud)
目前,我发现这样的记录:
def maximum_price
self.prices.find(:first, :conditions => "price = #{self.prices.maximum(:price_field)}" )
end
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?因为上面需要两个SQL语句来使它工作,并且它在某种程度上感觉不对.
PS.另外,我希望如果多个记录具有相同的"最大"值,那么它应该得到具有最新updated_at值的记录.这意味着另一个SQL语句?
PPS.有没有人知道Rails中AREL和非AREL事物的好或详细参考?ActiveRecord查询的Rails指南还不够!
(我正在使用Rails 3)
使用AREL我执行以下操作:
self.prices.order("updated_at DESC").maximum(:price_field)
Run Code Online (Sandbox Code Playgroud)
但是,这仅给出了最大价值,而不是完整的记录:(
而且,是利用maximum()真AREL?