标签: ruby-on-rails-3

获取类方法中属性的值

我有一个类方法,我想访问属性的值

class Run

  attr_accessor :line

  def self.output(options={})
    station_no = options[:station]
    title = options[:title]
    line = self.line
    station = line.stations[station_no-1]
  end
end
Run Code Online (Sandbox Code Playgroud)

在这个类方法中我想访问line属性的值,在类方法中我无法访问属性的值self.line.所以请建议我如何访问.

ruby rubygems ruby-on-rails ruby-on-rails-3

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

simple_form不显示一个特定表单的验证错误

这是我的表格:

= simple_form_for [@post, @comment] do |f| 
  = f.input :text, :label => false
  = f.button :submit
Run Code Online (Sandbox Code Playgroud)

注释嵌套在帖子资源中.评论验证:validates :text, :length => { :minimum => 5 }

评论控制器:

def create
  @post = Post.find params[:game_id]
  comment = @post.comments.build :user_id => current_user, :text => params[:comment][:text]

  comment.save
  redirect_to @post
end
Run Code Online (Sandbox Code Playgroud)

表单本身工作正常.如果我输入超过5个字符,则会创建注释.但如果它更少,我只是被重定向到posts#show并且表单中没有验证错误(我已经检查了源代码).

我也尝试填写设计注册表,如果失败,我可以看到错误.

我猜问题是由重定向引起的.但无论如何,我不知道如何解决它.

ruby-on-rails ruby-on-rails-3 simple-form

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

Ruby on Rails&Calling方法与符号基本问题

出于某种原因,我还没有完全了解Rails如何与Ruby交互/想出Ruby本身.

我会明白这一点.例如,在Ruby on Rails项目中,您可能会遇到以下情况:

class Product < ActiveRecord::Base
default_scope :order => 'title'
end
Run Code Online (Sandbox Code Playgroud)

这让我感到困惑.我假设我们正在调用default_scope方法,该方法继承自ActiveRecord基类......所以我们可以设置一些选项.我们传递符号:order =>'title'.是:在default_scope函数中只是一个哈希值,它将该哈希值设置为'title'?我能正确地做到这一点.

另外,例如,当您开始抛出基本验证时,您会得到类似的结果

validates :price, :numericalcity => {:greater_than_or_equal_to => 0.01 }
Run Code Online (Sandbox Code Playgroud)

我知道这是做什么的,但它的语法让我大吃一惊.首先,它看起来像符号用于静态重用的字符串值,但在这里我们发送一个动态符号...在哪里去?然后我们是符号中的符号吗?这基本上是哈希中的哈希还是它到底在做什么?我只是试图在我的大脑中追踪它,以真正了解正在发生的事情.

ruby symbols ruby-on-rails-3

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

如何向self.to_json添加值

现在,如果我有像@user这样的用户对象.

我可以做@ user.to_json

我想要做的是为json对象rails创建添加值.我试过这个:

@user.attributes.merge{ :catalyst_show => true } 
Run Code Online (Sandbox Code Playgroud)

但是语法错误的错误,意外的tASSOC,期待'}'

关于如何向json对象添加属性的任何想法?

谢谢

json ruby-on-rails ruby-on-rails-3

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

Rails 3.1中未定义的局部变量或方法f

我一直在使用rails大约一个月,主要是爱它,有时真气(我还没有通过魔法调试特别有效).

我有一个画廊页面,从一个简单的页面扩展.每个图库页面都有许多图库图像.

class Gallery < Page
  belongs_to :page, :dependent => :destroy
  has_many :gallery_images, :dependent => :destroy
  accepts_nested_attributes_for :gallery_images
end

class GalleryImage < ActiveRecord::Base
  has_attached_file :image, :styles => { :medium => "600x600>", :thumb => "100x100>" }
  belongs_to :gallery
end
Run Code Online (Sandbox Code Playgroud)

我试图通过页面控制器编辑图库.

  def edit
    @page = Gallery.find(params[:id])
    @house = @page.house
  end
Run Code Online (Sandbox Code Playgroud)

通过页面/ edit.html.erb我将库形式部分渲染

<%= form_for @page do |f| %>
  <p><b>Images</b></p>
    <% for image in @page.gallery_images %>
        <%= image.image.url(:thumb) %>
    <% end %>

  <%= f.fields_for :gallery_images do |builder| %>
    <% render :partial => "galleries/gallery_image_fields", …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

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

通过在应用程序启动时启动工作程序来初始化延迟作业gem

我正在使用Ruby on Rails 3.0.9,我正在尝试设置delay_job gem.如果在重新启动Apache2服务器后,我在Terminal\Console中运行以下命令,则一切正常:

RAILS_ENV=development script/delayed_job stop
RAILS_ENV=development script/delayed_job -n 2 start
Run Code Online (Sandbox Code Playgroud)

但是,由于我总是希望在应用程序启动时启动worker,在我config/initializers/delayed_job.rb添加以下代码(处理开发和生产模式):

if Rails.env.development?
  system 'RAILS_ENV=development script/delayed_job stop'
  system 'RAILS_ENV=development script/delayed_job -n 2 start'
elsif Rails.env.production?
  system 'RAILS_ENV=production script/delayed_job stop'
  system 'RAILS_ENV=production script/delayed_job -n 2 start'
end
Run Code Online (Sandbox Code Playgroud)

但是,通过使用上面的代码并在重新启动Apache2服务器之后,DJ gem不再按预期工作.也就是说,当我在Terminal\Console中运行上述命令行时,它不处理作业.

如何让DJ正常工作?问题是什么?

PS:我想这样做是为了使流程自动化.


它接收config/initializers/delayed_job.rb文件中的上述代码不会"创建"与RAILS_ROOT/tmp/pids目录中的DJ相关的"pids"文件.这些只能通过手动运行上述命令行来创建.为什么会这样?


UPDATE@Devin中号

我的config/initializers/delayed_job.rb包含:

# Options
Delayed::Worker.destroy_failed_jobs = false
Delayed::Worker.sleep_delay = 2
Delayed::Worker.max_attempts = 5
Delayed::Worker.max_run_time = 1.hour
Delayed::Worker.delay_jobs = !Rails.env.test?

if Rails.env.development?
  system "RAILS_ENV=development #{Rails.root.join('script','delayed_job')} stop" …
Run Code Online (Sandbox Code Playgroud)

ruby initialization ruby-on-rails delayed-job ruby-on-rails-3

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

Rails:如何获取给定用户的上次消息创建时间?

用户可以拥有多条消息:

class User < ActiveRecord::Base
  has_many :messages, :foreign_key => "publisher_id"
end
Run Code Online (Sandbox Code Playgroud)

为了获得最新的消息时间,我做了:

class User < ActiveRecord::Base
  def last_message_time
    last_message = messages.max{ |m1, m2| m1.created_at <=> m2.created_at }
    last_message ? last_message.created_at : nil
  end
end
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我确信有更好的方法来做到这一点.

你会怎么做?

ruby-on-rails ruby-on-rails-3 active-record-query

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

Rails 3项目,安装了jquery-rails gem,但得到"Ajax没有定义"

我是一个铁杆新手试图遵循如何执行一些Ajax调用(切换到jQuery后),但我遇到了一个问题.

每当我触发ajax代码(new Ajax.Request())时,我都会在firebug中得到"Ajax is not defined".有比我更多技能的人都知道这里有什么?

更新:

对于其他任何有此问题的人来说,生成上述代码的代码是对它的调用 remote_function()


我做了什么来设置:

  1. 在我的gemfile中添加了"gem'jquery-rails','> = 1.0.12'",并运行bundle install
  2. 运行rails生成jquery:install

我的public/javascripts /文件夹因此具有以下文件:

  • 的application.js
  • jquery.min.js
  • jQuery的ui.min.js
  • 的jquery.js
  • jQuery的ui.js
  • jquery_ujs.js

我的HTML中包含的脚本如下所示:

<script src="/javascripts/jquery.js?1312911234" type="text/javascript"></script>
<script src="/javascripts/jquery-ui.js?1312911234" type="text/javascript"></script>
<script src="/javascripts/jquery_ujs.js?1312911234" type="text/javascript"></script>
<script src="/javascripts/application.js?1312911234" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ruby-on-rails-3

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

如何将SQL查询转换为Rails Active Record Query?

我的上一篇文章是关于在LEFT OUTER JOIN上编写带有条件的SQL查询的最佳方法:
LEFT OUTER JOIN条件(where,order by)?

现在,我需要将这个优秀的SQL转换为甜蜜的Active Record Query(Rails 3).;-)

我有2个型号:

训练 has_many:training_histories

TrainingHistory belongs_to:training

如何编写范围以获取下面的SQL检索结果?

SELECT tc.id, tc.name, tc.order, 
th.id as history_id, th.finished_at, th.score
FROM trainings tc
LEFT OUTER JOIN training_histories th ON th.training_id = tc.id 
    and th.id =
    (SELECT th1.id from training_histories th1 where th1.training_id = tc.id
     and th1.finished_at is not null
     order by th1.finished_at desc limit 1)
WHERE tc.id > 4
AND tc.id < 8
GROUP BY tc.id
ORDER BY tc.order_by ASC, tc.id ASC
Run Code Online (Sandbox Code Playgroud)

我想检索TRAININGS的所有记录,并添加TRAINING_HISTORIES的最后一个有效(又名完成)相关记录.

有什么建议 …

mysql sql postgresql scope ruby-on-rails-3

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

Rails:动态更改CSS属性?

我需要max-width动态更改CSS属性,具体取决于与给定模型关联的图像数量.

我怎么能在Rails 3.1中做到这一点?

(Javascript&SASS/SCSS也可供我们使用)

javascript css ruby-on-rails css3 ruby-on-rails-3

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