默认的Rails 4项目生成器现在在控制器和模型下创建目录"Concer".我找到了一些关于如何使用路由问题的解释,但没有关于控制器或模型的解释.
我很确定它与社区当前的"DCI趋势"有关,并且想尝试一下.
问题是,我应该如何使用此功能,是否有关于如何定义命名/类层次结构以使其工作的约定?如何在模型或控制器中包含问题?
我试图组织JS文件"rails way"时,在我的Rails 4应用程序中遇到了一个问题.他们以前分散在不同的观点中.我将它们组织成单独的文件,并使用资产管道进行编译.但是,我刚刚了解到,当打开turbo-linked时,jQuery的"就绪"事件不会触发后续点击.第一次加载页面时它可以工作.但是当你点击链接时,内部的任何内容ready( function($) {都不会被执行(因为页面实际上并没有再次加载).好解释:这里.
所以我的问题是:在启用turbo-links时,确保jQuery事件正常工作的正确方法是什么?您是否将脚本包装在特定于Rails的侦听器中?或者也许rails有一些魔力让它变得不必要?文档对于它应该如何工作有点模糊,特别是关于通过像application.js这样的清单加载多个文件.
我在哪里可以找到可以在Ruby on Rails 4中使用的数据类型列表?如
text string integer float date 我一直在学习新的,我很想有一个我可以轻易参考的清单.
我刚刚更新到rails 4.0.2并且我收到此警告:
[已弃用] I18n.enforce_available_locales将来默认为true.如果您确实想跳过语言环境的验证,可以设置I18n.enforce_available_locales = false以避免此消息.
将其设置为false是否存在任何安全问题?
是否有一个替代update_attributes不保存记录?
所以我可以这样做:
@car = Car.new(:make => 'GMC')
#other processing
@car.update_attributes(:model => 'Sierra', :year => "2012", :looks => "Super Sexy, wanna make love to it")
#other processing
@car.save
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我知道我可以@car.model = 'Sierra',但我想在一条线上更新它们.
ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 rails-activerecord
在扶手> 4.0.0发电机,创建CRUD操作before_action没有before_filter.它似乎做同样的事情.那么这两者之间的区别是什么?
用户有很多上传.我想在uploads引用该表的表中添加一列user.迁移应该是什么样的?
这就是我所拥有的.我不确定是否应该使用(1):user_id, :int或(2):user, :references.我甚至不确定(2)是否有效.只是试图以"轨道"的方式做到这一点.
class AddUserToUploads < ActiveRecord::Migration
def change
add_column :uploads, :user_id, :integer
end
end
Run Code Online (Sandbox Code Playgroud)
除Rails之外的相关问题3. Rails 3迁移:添加引用列?
ruby-on-rails rails-migrations ruby-on-rails-4 rails-activerecord
attr_accessible 似乎不再适用于我的模型.
在Rails 4中允许批量分配的方法是什么?
我在初始化程序中使用以下行在/lib开发期间在我的目录中自动加载代码:
配置/初始化/ custom.rb:
RELOAD_LIBS = Dir[Rails.root + 'lib/**/*.rb'] if Rails.env.development?
Run Code Online (Sandbox Code Playgroud)
(来自Rails 3 Quicktip:在开发模式下自动重新加载lib文件夹)
它运行良好,但在生产中使用效率太低 - 而不是在每个请求上加载库,我只想在启动时加载它们.同一篇博客还有另一篇文章描述了如何做到这一点:
配置/ application.rb中:
# Custom directories with classes and modules you want to be autoloadable.
config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += Dir["#{config.root}/lib/**/"]
Run Code Online (Sandbox Code Playgroud)
但是,当我切换到它时,即使在开发中,我在尝试使用lib函数时也会得到NoMethodErrors.
我的一个lib文件的示例:
LIB/extensions.rb中:
Time.class_eval do
def self.milli_stamp
Time.now.strftime('%Y%m%d%H%M%S%L').to_i
end
end
Run Code Online (Sandbox Code Playgroud)
调用Time.milli_stamp将抛出NoMethodError
我意识到其他人已经在SO上回答了类似的问题,但他们似乎都在处理命名约定和其他我之前不必担心的问题 - 我的lib类已经为每个请求加载工作了,我只是想改变它到per- 启动加载.这样做的正确方法是什么?
当我尝试使用带有我的rails blogging app的paperclip上传时,我收到此错误.当它说"MissingRequiredValidatorError"时,不知道它是指什么我认为通过更新post_params并给它:image它会没事,因为创建和更新都使用post_params
Paperclip::Errors::MissingRequiredValidatorError in PostsController#create
Paperclip::Errors::MissingRequiredValidatorError
Extracted source (around line #30):
def create
@post = Post.new(post_params)
Run Code Online (Sandbox Code Playgroud)
这是我的posts_controller.rb
def update
@post = Post.find(params[:id])
if @post.update(post_params)
redirect_to action: :show, id: @post.id
else
render 'edit'
end
end
def new
@post = Post.new
end
def create
@post = Post.new(post_params)
if @post.save
redirect_to action: :show, id: @post.id
else
render 'new'
end
end
#...
private
def post_params
params.require(:post).permit(:title, :text, :image)
end
Run Code Online (Sandbox Code Playgroud)
这是我的帖子助手
module PostsHelper
def post_params
params.require(:post).permit(:title, :body, :tag_list, :image)
end
end
Run Code Online (Sandbox Code Playgroud)
如果我能补充额外的材料来帮助你,请告诉我.
ruby-on-rails-4 ×10
ruby ×5
crud ×1
dci ×1
deprecated ×1
javascript ×1
jquery ×1
paperclip ×1
rails-i18n ×1
turbolinks ×1