我有一个使用Rails创建的Rails应用程序3.2.6.现在3.2.8已经发布了,这是我需要做的更新应用程序吗?
Gemfile,将行更改gem 'rails', '3.2.6'为gem'rails', '3.2.8'bundle update rails那些其他Rails生成的条目Gemfile,例如sass-rails,coffee-rails和uglifier?
将轨道2发电机转换为轨道3有多困难?我一直在寻找有用的插件,但后来发现生成器只用于rails 2.我意识到它只是一个方便,但是如果将生成器迁移到rails 3就像调整生成器代码中的几行一样简单,我会只需这样做(并将工作提交给github以供将来的用户使用).
这是我一直在考虑使用的一个这样的发生器,例如(来自反馈)
require File.expand_path(File.dirname(__FILE__) + "/lib/insert_routes.rb")
class FeedbackFormGenerator < Rails::Generator::Base
attr_accessor :name,
:model_class_name,
:controller_class_name,
:helper_class_name,
:mailer_class_name
def initialize(runtime_args, runtime_options = {})
super
@name = (runtime_args[0] || "feedback").downcase
@model_class_name = name.classify
@mailer_class_name = "#{@model_class_name}Mailer"
@controller_class_name = "#{@model_class_name.pluralize}Controller"
@helper_class_name = "#{@model_class_name.pluralize}Helper"
#@js_framework = (runtime_options[''])
end
def manifest
record do |m|
puts "hello"
add_model(m)
add_mailer(m)
add_controller(m)
add_helper(m)
add_views(m)
add_routes(m)
add_unit_test(m)
add_functional_test(m)
add_stylesheet(m)
add_javascript(m)
add_images(m)
end
end
def add_stylesheet(m)
m.directory 'public/stylesheets'
m.file 'feedback.css', 'public/stylesheets/feedback.css'
end
def add_javascript(m)
m.directory 'public/javascripts'
file_name …Run Code Online (Sandbox Code Playgroud) code-generation ruby-on-rails generator ruby-on-rails-3 rails-3-upgrade
我正在升级从Rails的2.3.11到3.0.10,和我有麻烦将是什么在ApplicationController的filter_parameter_logging.我想过滤某些参数,如果它们出现在像:referrer标签这样的值中,也会对它们进行过滤.
我可以在我的网站中过滤掉常规参数 application.rb
config.filter_parameters += [:password, :oauth, ...]
Run Code Online (Sandbox Code Playgroud)
但我遇到的问题是我们也在filter_parameter_logging中传递的块.它还会过滤掉任何看起来像网址的值中的参数,因此http://example.com?password=foobar&oauth=123foo&page=2会将其记录为http://example.com?password=[FILTERED]&oauth=[FILTERED]&page=2.我需要一种方法让rails既可以过滤指定的参数,也可以过滤掉其他值中的参数,就像上面的url一样.
这是filter_parameter_logging中的样子:
FILTER_WORDS = %{password oauth email ...}
FILTER_WORDS_REGEX = /#{FILTER_WORDS.join("|")}/i
#Captures param in $1 (would also match things like old_password, new_password), and value in $2
FILTER_WORDS_GSUB_REGEX = /((?:#{FILTER_WORDS.join("|")})[^\/?]*?)(?:=|%3D).*?(&|%26|$)/i
filter_parameter_logging(*FILTER_WORDS) do |k,v|
begin
# Bail immediately if we can
next unless v =~ FILTER_WORDS_REGEX && (v.index("=") || v.index("%3D"))
#Filters out values for params that match
v.gsub!(FILTER_WORDS_GSUB_REGEX) do
"#{$1}=[FILTERED]#{$2}"
end
rescue Exception => …Run Code Online (Sandbox Code Playgroud) 我正在研究Rails 1.2.3版本.现在我想将Rails版本以及ruy版本从1.8.6升级到1.9.7.
使用这样的旧版本是一个很大的痛苦,但它处于运行状态.现在我想要Rails的高级功能但不支持这个旧版本.
请建议我升级版本和ruby版本的方法.
谢谢....
7.4.2带有块的助手
帮助者喜欢
form_for或者div_for插入块中的内容<%=现在使用:Run Code Online (Sandbox Code Playgroud)<%= form_for @post do |f| %> ... <% end %>你自己的那种助手应该返回一个字符串,而不是手工附加到输出缓冲区.
做其他事情的助手,比如
cache或content_for,不受这种变化的影响,他们需要<%像以前一样.
我们正在将Web应用程序从Rails 2.3.18迁移到Rails 3.1.12,并且拥有已更改的这些帮助程序的完整列表非常有用,这样我们就可以检查它们的所有出现情况.我们的源代码,但我找不到这种权威列表.
我已经尝试查看rails项目的git历史记录,但似乎有许多相关更改的提交,并且它们显然没有分组在特定的分支上.例如,似乎很清楚这个清单包括:
form_forform_tagfields_forfield_set_tag......来自7b622786f,
link_to...在e98474096中提到并且:
div_forcontent_tag_for...在e8d2f48cff中提到
remote_form_for....在0982db91f中提到,虽然它已在Rails 3中删除.
但是,我确信这还不完整 - 有人能提供完整的清单吗?
我正在尝试polymorphic_path在Rails 3中使用功能测试.
起初我会得到
NoMethodError: undefined method `polymorphic_path' for #<ArticlesControllerTest:0x492f17c>
Run Code Online (Sandbox Code Playgroud)
然后我补充道
include Rails.application.routes.url_helpers
Run Code Online (Sandbox Code Playgroud)
该undefined method error停止了,但现在常规路径,如article_path(article)例如停止工作:
NameError: undefined local variable or method `default_url_options' for #<ArticlesControllerTest:0x33ccbe0>
.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/testing/assertions/routing.rb:175:in `method_missing'
.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/routing/url_for.rb:102:in `url_options'
.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/routing/url_for.rb:131:in `url_for'
.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/routing/route_set.rb:195:in `article_path'
Run Code Online (Sandbox Code Playgroud)
我曾经能够通过包含在Rails 2中正常使用polymorphic_path
include ActionController::UrlWriter
Run Code Online (Sandbox Code Playgroud)
如何在Rails 3中使用它?
ruby ruby-on-rails functional-testing ruby-on-rails-3 rails-3-upgrade
我正在将我的应用程序从Rails 2.3升级到Rails 3.我读到我需要插入
<%= csrf_meta_tag%>
在我的布局中,我做了.不幸的是,当我使用ajax请求时,我一直在注销.经过一番研究后,我发现一种较旧的方法是添加
$j(document).ajaxSend(function(e, xhr, options) {
var token =$j("meta[name='csrf-token']").attr("content");
xhr.setRequestHeader("X-CSRF-Token", token);
});
Run Code Online (Sandbox Code Playgroud)
在我的application.js文件中.它现在正常工作(似乎我实际上不需要csrf_meta_tag).
这是正常的我不得不在我的application.js中添加这4行代码而不仅仅是csrf_meta_tag,或者我只是遗漏了什么?
我有一个Rails 3.0.4应用程序,但我的服务器使用Rails 3.0.6
如何在我的应用程序中更新rails?
我正在使用calendar_date_select gem.
它在我的rails 2.3.x版本中运行良好.
但现在我正在尝试将其升级到3.0.10
真的卡在undefined method 'calendar_date_select_includes'所有页面的错误上.
Gemfile只有:
gem 'rails', '3.0.10'
gem 'mysql2', '~> 0.2.11'
gem "acts_as_list"
gem "simple_form"
gem "calendar_date_select"
gem "haml"
Run Code Online (Sandbox Code Playgroud)
我的views/layouts/application.html.haml页面有这个(注意:haml!)
%head
= stylesheet_link_tag 'contam/default.scss'
= stylesheet_link_tag 'main.css'
= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"
= javascript_include_tag "jQueryUI/js/jquery-ui-1.8.11.custom.min.js"
%script
var $j = jQuery.noConflict();
= javascript_include_tag :defaults
= calendar_date_select_includes "silver"
Run Code Online (Sandbox Code Playgroud)
我的样式也没有被加载.
好好看一些播客,我已经看到在Rails 3中,我们需要<%= %>现在使用标签,而不是之前.但是只需将它放在我的application.html.erb文件中:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head></head>
<body>
<%= if true %>
true
<% end %>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
不会像我预期的那样呈现'真实'.相反,我得到一个错误:
Showing /app/views/layouts/application.html.erb where line #5 raised:
/app/views/layouts/application.html.erb:5: syntax error, unexpected ')', expecting keyword_then or ';' or '\n'
');@output_buffer.append= ( if true );@output_buffer.safe_concat('
^
/app/views/layouts/application.html.erb:7: syntax error, unexpected keyword_end, expecting ')'
'); end
^
/app/views/layouts/application.html.erb:10: syntax error, unexpected keyword_ensure, expecting ')'
/app/views/layouts/application.html.erb:12: syntax error, unexpected keyword_end, expecting ')'
Extracted source (around line #5):
2: <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" …Run Code Online (Sandbox Code Playgroud)