小编Nic*_*5a1的帖子

Rails 3.0/3.2:被调用id为nil,这将错误地为4 - 如果你真的想要id为nil,请使用object_id

我正在关注Kevin Skoglund教程Ruby on Rails 3 Essential Training,它是为rails 3.0编写的,尽管我目前正在使用3.2.它使用带有before_filter的pages_controller中的以下方法,仅显示属于父主题的页面.

该教程明确使用.find_by_id,因为如果结果为nil,则"不会返回错误".但是,当我尝试查看@subject已设置为nil的页面时,我得到"被调用的id为nil,错误地为4 - 如果你真的想要id为nil,请使用object_id"错误.

def find_subject
  if params[:subject_id]
    @subject = Subject.find_by_id(params[:subject_id])
  end
end
Run Code Online (Sandbox Code Playgroud)

导致错误的实际代码是:

def list
  @pages = Page.order("pages.position ASC").where(:subject_id => @subject.id)
end
Run Code Online (Sandbox Code Playgroud)

这是自3.0以来发生了什么变化吗?如果是这样,在3.2中实现此功能的正确方法是什么?

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

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

Rails:HABTM - 查找没有关联的所有记录

我有2个模型(Workout,Equipment)中有一个属于很多关系.如果我使用Workout.find(:all, :joins => :equipment, :conditions => "equipment.id = 5")它,但如果我使用Workout.find(:all, :joins => :equipment, :conditions => "equipment.id = null")它不会返回没有关联的记录.有任何想法吗?

ruby-on-rails has-and-belongs-to-many ruby-on-rails-3 ruby-on-rails-3.1

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

Rails - 播种HABTM协会

Equipment.create(name: "Room to run")
Equipment.create(name: "Pull-up bar")
Workout.create(
  description: "Do 100 pull-ups then run 5km",
  :equipment => Equipment.where(:name => 'Pull-up bar'))
Run Code Online (Sandbox Code Playgroud)

设备和锻炼有HABTM关系.上面的种子代码有效,但我怎么能同时分配第二个设备协会?

ruby ruby-on-rails seed has-and-belongs-to-many ruby-on-rails-3

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

find_by_id(params [:subject_id])vs where where(:id => params [:subject_id]).first

我是铁杆新手.只是想知道哪个是更好的方法,如果找不到subject_id,将返回nil:

@subject = Subject.find_by_id(params[:subject_id])
Run Code Online (Sandbox Code Playgroud)

要么

@subject = Subject.where(:id => params[:subject_id]).first
Run Code Online (Sandbox Code Playgroud)

谢谢.

ruby-on-rails ruby-on-rails-3.2

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

使用bind_cols (r, dplyr) 时设置列名

我有一个 data.frame (df),其中包含另一个名为 url_variables 的 data.frame。

url_variables = df$url_variables
Run Code Online (Sandbox Code Playgroud)

url_variables 包含许多其他 data.frames,例如sourceCampaignpage等。每个数据框都有 3 列keyvaluetype。我使用 bind_cols 将所有单独的数据帧组合成一个平面数据帧。

flat_url_variables = bind_cols(as.list(url_variables))
Run Code Online (Sandbox Code Playgroud)

问题是 flat_url_variables 的列名称是非描述性的keyvaluetypekeyvaluetype等。如何根据每个单独的 url 变量 data.frame 的名称来命名 flat_url_variables 的列(source_key , source_value ,来源类型活动密钥等)?

编辑这是url_variables图像的一个小样本: 在此输入图像描述

这是输出dput(head(url_variables))

structure(list(`_privatedomain` = structure(list(key = c("_privatedomain", 
"_privatedomain", "_privatedomain", "_privatedomain", "_privatedomain", 
"_privatedomain"), value = c("t", "t", …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

用于登录表单的Ruby RestClient.post

我正在尝试使用以下代码登录网站:

require 'rubygems'
require 'nokogiri'
require 'open-uri'
require 'csv'
require 'restclient'

HEADERS_HASH = {"User-Agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/534.57.5 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.4"}

page = Nokogiri::HTML(open("http://example.com/login", HEADERS_HASH))

token = page.css("form.login_box div input")[0]['value']

login_resp = RestClient.post("https://example.com/session", {"authenticity_token" => token, "login" => 'username', "password" => 'password', "remember_me" => 1, 'commit' => 'Sign In'})
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

/usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rest-client-1.6.7/lib/restclient/abstract_response.rb:39:in `return!': 302 Found (RestClient::Found)
    from /usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rest-client-1.6.7/lib/restclient/request.rb:230:in `process_result'
    from /usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rest-client-1.6.7/lib/restclient/request.rb:178:in `block in transmit'
    from /usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/1.9.1/net/http.rb:745:in `start'
    from /usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rest-client-1.6.7/lib/restclient/request.rb:172:in `transmit'
    from /usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rest-client-1.6.7/lib/restclient/request.rb:64:in `execute'
    from …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails rest-client

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

当模型单数和复数名称相同时(例如设备,物种),rails链接路径和路由错误

<%= link_to t('.new', :default => t("helpers.links.new")), new_equipment_path, :class => 'btn btn-primary' %>
Run Code Online (Sandbox Code Playgroud)

我在视图中有上面的代码,但是在单击链接时出现以下错误: No route matches {:action=>"show", :controller=>"equipment"}

我的路线文件包含:

resources :equipment

resources :workouts

match ':controller(/:action(/:id))(.:format)'
Run Code Online (Sandbox Code Playgroud)

为什么要尝试访问show动作?

以下是我的路线中的条目:

   equipment_index GET        /equipment(.:format)                   equipment#index
                   POST       /equipment(.:format)                   equipment#create
     new_equipment GET        /equipment/new(.:format)               equipment#new
    edit_equipment GET        /equipment/:id/edit(.:format)          equipment#edit
         equipment GET        /equipment/:id(.:format)               equipment#show
                   PUT        /equipment/:id(.:format)               equipment#update
                   DELETE     /equipment/:id(.:format)               equipment#destroy
Run Code Online (Sandbox Code Playgroud)

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

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

什么在config.ru上为heroku上的非rails应用程序?

我有一个简单的红宝石(非rails)应用程序使用resque,并没有启动没有config.ru在heroku上.当我添加config.ru文件时,我在rackup本地运行时收到以下错误:

/usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/builder.rb:133:in `to_app': missing run or map statement (RuntimeError)
from /Users/nickkarrasch/Dropbox/Coding/Ruby/smsnotifyv2/config.ru:in `<main>'
from /usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/builder.rb:49:in `eval'
from /usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/builder.rb:49:in `new_from_string'
from /usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/builder.rb:40:in `parse_file'
from /usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/server.rb:277:in `build_app_and_options_from_config'
from /usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/server.rb:199:in `app'
from /usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/server.rb:314:in `wrapped_app'
from /usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/server.rb:250:in `start'
from /usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rack-1.5.2/lib/rack/server.rb:141:in `start'
from /usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/gems/1.9.1/gems/rack-1.5.2/bin/rackup:4:in `<top (required)>'
from /usr/local/Cellar/ruby/1.9.3-p194/bin/rackup:23:in `load'
from /usr/local/Cellar/ruby/1.9.3-p194/bin/rackup:23:in `<main>'
Run Code Online (Sandbox Code Playgroud)

我需要在config.ru中放入什么?

ruby rack heroku resque

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

Ruby delete_if多个值 - 只删除第一个值

words.delete_if do |x|
  x == ("a"||"for"||"to"||"and")
end
Run Code Online (Sandbox Code Playgroud)

words是一个包含很多单词的数组.我的代码是删除"a"但不删除"for","to"或"and".

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

2
推荐指数
3
解决办法
2019
查看次数

为什么在此创建表脚本中出现错误?

我试图写我的第一个php / mysql页面,并遇到一个SQL语法错误,我找不到原因。

错误如下:

无法创建域建议表。错误您的SQL语法有错误。检查与您的MySQL服务器版本相对应的手册,以在第2行的'PRIMARY_KEY,域TEXT,作者TEXT,submitdate DATE NOT NULL)DE'附近使用正确的语法

我的代码如下。任何帮助,不胜感激。

$sql = 'SELECT domain FROM domainsuggestions'; 
$domains = mysqli_query($link, $sql);  // get domain suggestions from table
if (!$domains)  // check if was able to get results from table. if not create table
{
    $output = 'Unable to find domain suggestions table. Creating now...';
    echo htmlspecialchars($output, ENT_QUOTES, 'UTF-8');

    $createtable = 'CREATE TABLE domainsuggestions(
    id INT NOT NULL AUTO_INCREMENT PRIMARY_KEY,
    domain TEXT,
    author TEXT,
    submitdate DATE NOT NULL
    ) DEFAULT CHARACTER SET utf8'; …
Run Code Online (Sandbox Code Playgroud)

mysql sql mysql-error-1064

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