小编use*_*058的帖子

如何在Rails 3中向控制器添加自定义操作

我想向我的控制器添加另一个动作,我无法弄清楚如何.

我在RailsCasts和大多数StackOverflow主题上发现了这个:

# routes.rb
resources :items, :collection => {:schedule => :post, :save_scheduling => :put}

# items_controller.rb
  ...
  def schedule
  end

  def save_scheduling
  end

# items index view:
<%= link_to 'Schedule', schedule_item_path(item) %>
Run Code Online (Sandbox Code Playgroud)

但它给了我错误:

undefined method `schedule_item_path' for #<#<Class:0x6287b50>:0x62730c0>
Run Code Online (Sandbox Code Playgroud)

不确定我应该从哪里开始.

ruby-on-rails

20
推荐指数
1
解决办法
2万
查看次数

怎么告诉黄瓜去一些页面?

我正在学习用黄瓜+水豚测试.

在一个视频教程中,我发现这样的东西应该有效:

...
When I go to the homepage
Then /do stuff/
Run Code Online (Sandbox Code Playgroud)

我试图这样做,但黄瓜将"主页"这个词视为正则表达式的一部分.

所以它给了我建议这样的声明的建议

When /^I go to homepage$/ do
   #tasks
end
Run Code Online (Sandbox Code Playgroud)

试过"索引页","项目页面"(现有控制器的名称),"根路径" - 同样的事情.黄瓜实际上并没有去那里 - 只是要求创建一个处理程序.

我从哪里开始?

ruby-on-rails

10
推荐指数
1
解决办法
6298
查看次数

SELECT ... AS ... 使用 ActiveRecord

是否可以使用 rails 进行这样的查询?

SELECT items.*, (select count(*) from ads where item_id = items.id) as adscount WHERE 1
Run Code Online (Sandbox Code Playgroud)

然后像这样访问这个字段?

@item.adscount 
Run Code Online (Sandbox Code Playgroud)

例如,每个项目都有一百个左右的广告。在项目索引视图中,我需要显示每个项目有多少个广告。

目前我只知道如何对每个项目进行唯一查询,例如:

select count(*) from ads where item_id = 1
select count(*) from ads where item_id = 2
select count(*) from ads where item_id = 3
etc
Run Code Online (Sandbox Code Playgroud)

编辑:

做了一个计数器缓存列。

这给了我巨大的性能提升。

ruby-on-rails

5
推荐指数
1
解决办法
6076
查看次数

单行赋值:If(condition)variable = value1 else value2

我该怎么办?

if params[:property] == nil 
 @item.property = true
else 
 @item.property = false
Run Code Online (Sandbox Code Playgroud)

总是忘记在一行中编写它的正确语法.

在PHP中它将是这样的:

@item.property=(params[:property]==nil)true:false
Run Code Online (Sandbox Code Playgroud)

在铁轨中是否相同?

ruby-on-rails

4
推荐指数
1
解决办法
1万
查看次数

如果行不存在则创建行

我需要做这样的事情:

if @item.exists?(:cron => "mycron")
  # redirect to item page
else
  # create new @item
end
Run Code Online (Sandbox Code Playgroud)

在Rails中有更简单的方法吗?

也许是这样的:

@item.create_if_not_exists(:cron => "mycron")
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails

2
推荐指数
1
解决办法
5400
查看次数

标签 统计

ruby-on-rails ×5