使用Ruby on Rails 3的新路由系统,是否可以更改default:id参数
resources :users, :key => :username
Run Code Online (Sandbox Code Playgroud)
出来以下路线
/users/new
/users/:username
/users/:username/edit
...etc
Run Code Online (Sandbox Code Playgroud)
我问,因为虽然上面的例子很简单,但在我正在进行的当前项目中做真的很有帮助.
是否可以更改此参数,如果没有,是否有特定原因为什么不?
是否有可能让rvm知道在某个目录下导航时应该使用哪个gemset,就像你可以通过在该目录下导航git当前分支的信息一样?
我理解git是如何工作的,因为每个目录在根目录中都有自己的.git目录,但不知道是否可能,因为.rvm更像是用户范围的配置.或者答案是在每个目录中创建一个.rvm文件?
我正在通过带有Rails(Rails 3 beta 3)的Mongoid Ruby gem学习MongoDB,我正试图想出一种基于另一个模型的字段在模型上创建动态属性的方法,我认为这是一种模式 - 少数据库将是一个不错的选择.
例如,我有模型:
class Account
include Mongoid::Document
field :name, :type => String
field :token, :type => String
field :info_needed, :type => Array
embeds_many :members
end
class Member
include Mongoid::Document
embedded_in :account, :inverse_of => :members
end
Run Code Online (Sandbox Code Playgroud)
我希望获取Account模型的"info_needed"属性,并根据内部的内容在Member模型上创建动态属性.如果club.info_needed是["first_name","last_name"],我正在尝试创建一个将first_name和last_name属性保存到Member模型的表单.
但是,在练习时,我只是在尝试执行此操作时不断在成员模型上获得"undefined method first_name ="错误.我知道MongoDB可以处理每个记录的动态属性,但是如何在没有未定义的方法错误的情况下让Mongoid执行此操作?
在什么样的情况下代码:
module M
extend self
def greet
puts "hello"
end
end
Run Code Online (Sandbox Code Playgroud)
使用更有利于说:
module M
def self.greet
puts "hello"
end
end
Run Code Online (Sandbox Code Playgroud)
在顶部,一个是扩展的实例方法,后者只是一个类方法,但在调用任一方法时,你必须使用M.greet,对吧?我很好奇是否有人可以说明何时使用一个代码而不是另一个代码.谢谢!
我正在使用Rails 3.1.0.rc4,我正在与capybara的新类似DSL和Rspec进行集成测试(使用Devise身份验证)
我遇到的问题是,当我运行集成测试时,来自capybara的机架测试驱动程序似乎完全失去了用户的登录会话,事实上,会话似乎完全清除了.
经过几天的调试,我完全失去了原因.逐行通过中间件堆栈,我相信我已经把问题排除在ActiveRecord::SessionStore导致这种情况发生的事情上.我在这里读到Rails会清除一个会话,如果它无法验证CSRF令牌,这让我相信我有一些配置错误,并且由于某种原因这个测试没有正确验证CSRF令牌.
这是我在/ initializers目录中的session_store.rb中的内容:
MyApp::Application.config.session_store :active_record_store
Run Code Online (Sandbox Code Playgroud)
有没有人知道铁轨中的CSRF保护有任何线索可能会发生这种情况?
此外,还有一些注意事项:
任何人都可以给我任何关于这里究竟发生了什么的线索,以及为什么一个测试似乎随意地放弃了它的会话而对我失败了?我做了很多调试,并尝试了我能想到的一切.
我最近一直在使用Ruby on Rails进行许多项目,我认为看看Rails源代码并真正了解它在底层的运行方式会很有趣.我认为这将是一次很棒的学习经历,并且可能会增强我对Rails应用程序进行编码的方式.
有没有人有关于如何开始的任何提示?在Rails源中,应用程序何时开始执行?也许如果我从那里开始,我可以看到一切都是如何加载和一般的.
我正在使用Facebook的Flux Dispatcher创建一个简单的CRUD应用程序来处理英语学习网站的帖子的创建和编辑.我目前正在处理一个看起来像这样的api:
/posts/:post_id
/posts/:post_id/sentences
/sentences/:sentence_id/words
/sentences/:sentence_id/grammars
Run Code Online (Sandbox Code Playgroud)
在应用程序的显示和编辑页面上,我希望能够在一个页面上显示给定帖子的所有信息以及所有句子和句子的单词和语法详细信息.
我遇到的问题是弄清楚如何启动收集所有这些数据所需的所有异步调用,然后将我需要的数据从所有存储组合成一个对象,我可以将其设置为我的顶级组件中的状态.我一直在尝试做的一个当前(可怕)的例子是:
顶级PostsShowView:
class PostsShow extends React.Component {
componentWillMount() {
// this id is populated by react-router when the app hits the /posts/:id route
PostsActions.get({id: this.props.params.id});
PostsStore.addChangeListener(this._handlePostsStoreChange);
SentencesStore.addChangeListener(this._handleSentencesStoreChange);
GrammarsStore.addChangeListener(this._handleGrammarsStoreChange);
WordsStore.addChangeListener(this._handleWordsStoreChange);
}
componentWillUnmount() {
PostsStore.removeChangeListener(this._handlePostsStoreChange);
SentencesStore.removeChangeListener(this._handleSentencesStoreChange);
GrammarsStore.removeChangeListener(this._handleGrammarsStoreChange);
WordsStore.removeChangeListener(this._handleWordsStoreChange);
}
_handlePostsStoreChange() {
let posts = PostsStore.getState().posts;
let post = posts[this.props.params.id];
this.setState({post: post});
SentencesActions.fetch({postId: post.id});
}
_handleSentencesStoreChange() {
let sentences = SentencesStore.getState().sentences;
this.setState(function(state, sentences) {
state.post.sentences = sentences;
});
sentences.forEach((sentence) => {
GrammarsActions.fetch({sentenceId: sentence.id})
WordsActions.fetch({sentenceId: sentence.id})
}) …Run Code Online (Sandbox Code Playgroud) 对于我认识的大多数正则表达式专家来说这是一个简单的问题,但是我试图在一个句子中的某些花括号之间返回所有匹配词; 但Ruby只返回一个匹配,我无法弄清楚为什么.
我正在使用这个例句:
sentence = hello {name} is {thing}
Run Code Online (Sandbox Code Playgroud)
使用此正则表达式尝试返回"{name}"和"{thing}":
sentence[/\{(.*?)\}/]
Run Code Online (Sandbox Code Playgroud)
但是,Ruby只返回"{name}".任何人都可以解释为什么它不匹配这两个词?
我正在尝试在Rails中将ActiveRecord模型转换为JSON,虽然to_json方法通常有效,但不包括模型的虚拟属性.Rails中是否有一种方法不仅列出模型的属性,还列出attr_accessor和attr_reader属性,以便在模型转换为JSON时所有可读属性都可用?
我刚刚学习如何最好地组织我的javascript代码,我对我写的这小段代码有一个疑问:
var reportsControllerIndex = {
plotMapPoints: function(data) {
//plots points
},
drawMap: function() {
$.getJSON('/reports.json', function(data) {
reportsControllerIndex.plotMapPoints(data);
});
},
run: function() {
reportsControllerIndex.drawMap();
}
};
Run Code Online (Sandbox Code Playgroud)
问题是关于从reportsControllerIndex对象中调用reportsControllerIndex的另一个函数.我首先尝试了以下运行函数的代码:
run: function() {
this.drawMap();
}
Run Code Online (Sandbox Code Playgroud)
这很完美.但是,我很快发现这是为drawMap函数做的:
drawMap: function() {
$.getJSON('/reports.json', function(data) {
this.plotMapPoints(data);
});
}
Run Code Online (Sandbox Code Playgroud)
不起作用,因为"this"现在将引用getJSON调用的回调函数.
我的解决方案是将reportsControllerIndex放在我想要调用的所有方法的前面,但我很好奇:是否有一种更相对的方式来调用像这样的整体对象中的函数(就像你在一个类中所做的那样)标准的OO语言)?或者我现在被迫这样做,只是通过对象的名称调用方法?
ruby ×3
javascript ×2
activerecord ×1
capybara ×1
class-method ×1
csrf ×1
devise ×1
flux ×1
json ×1
module ×1
mongodb ×1
mongoid ×1
object ×1
open-source ×1
reactjs ×1
regex ×1
routing ×1
rspec ×1
rvm ×1