我有时会看到那些似乎更长时间使用rails的人,他们学到的一个重要教训是"不要使用脚手架".同样在irc上我从这个方向读了一些提示.我的问题是为什么,它有什么坏处?并且nifty_scaffolding也不好吗?
我的猜测是它是坏的,因为它在默认情况下产生的控制器动作的XML版本,这会暴露我们的应用程序的字段名称任何人,使之成为攻击更加脆弱,所以也许这是这个?
你不做脚手架的原因是什么?
我正在使用jquery bootstrap下拉列表.我在下拉列表中添加了一些输入文本,现在当我尝试提交时我想要做什么,它必须关闭下拉列表.有什么办法吗?
这是来自twitter bootstrap的url演示:http: //twitter.github.com/bootstrap/javascript.html#dropdowns
!function ($) {
var toggle = '[data-toggle=dropdown]'
, Dropdown = function (element) {
var $el = $(element).on('click.dropdown.data-api', this.toggle)
$('html').on('click.dropdown.data-api', function () {
$el.parent().removeClass('open')
})
}
Dropdown.prototype = {
constructor: Dropdown
, toggle: function (e) {
var $this = $(this)
, $parent
, isActive
if ($this.is('.disabled, :disabled')) return
$parent = getParent($this)
isActive = $parent.hasClass('open')
clearMenus()
if (!isActive) {
$parent.toggleClass('open')
$this.focus()
}
return false
}
, keydown: function (e) {
var $this
, $items
, …Run Code Online (Sandbox Code Playgroud) 对不起,如果这是一个愚蠢的问题,我仍然相当新.我对导航如何使用角度j有基本的了解,但我无法弄清楚如何设置起始页面.我想将我的登录页面设置为我的起始页面,网址显示登录页面已打开(" http:// localhost:8100 /#/ template/login ")但它只显示一个空白标题,我怀疑是来自我的index(ion-nav-bar).
谢谢.
的index.html
<body ng-app="starter">
<!--
The nav bar that will be updated as we navigate between views.
-->
<ion-nav-bar class="bar-stable">
<ion-nav-back-button>
</ion-nav-back-button>
</ion-nav-bar>
<!--
The views will be rendered in the <ion-nav-view> directive below
Templates are in the /templates folder (but you could also
have templates inline in this html file if you'd like).
-->
<ion-nav-view class="slide-left-right"></ion-nav-view>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
的login.html
<ion-view view-title="Login" name="login-view">
<ion-content class="padding">
<h1>lalalalala</h1>
<div class="list">
<label class="item item-input">
<span class="input-label">Username</span>
<input …Run Code Online (Sandbox Code Playgroud) 正在开发一个正在开发的电子商务应用程序我试图解决以下问题:我通过awesome_nested_set插件实现了我的类别.如果我通过选择一个类别列出我的文章一切正常,但对于某些链接,我想显示一个类别的所有产品和其子类别的产品.
这里是控制器代码只适用于一个类别:
# products_controller.rb
def index
if params[:category]
@category = Category.find(params[:category])
#@products = @category.product_list
@products = @category.products
else
@category = false
@products = Product.scoped
end
@products = @products.where("title like ?", "%" + params[:title] + "%") if params[:title]
@products = @products.order("created_at).page(params[:page]).per( params[:per_page] ? params[:per_page] : 25)
@categories = Category.all
end
Run Code Online (Sandbox Code Playgroud)
我注释掉的一行是我在类别模型中自己编写的辅助方法,它返回类别中所有产品及其子类别的数组.
它的定义如下:
# app/models/category.rb
def product_list
self_and_ancestors.to_a.collect! { |x| x.products }
end
Run Code Online (Sandbox Code Playgroud)
现在当我取消注释这一行并尝试选择一个类别时,我的产品控制器代码会出现错误,例如
undefined method `order' for #<Array:0x1887c2c>
Run Code Online (Sandbox Code Playgroud)
要么
undefined method `page' for #<Array:0x1887c2c>
Run Code Online (Sandbox Code Playgroud)
因为我正在使用订购和分页,它不能再订购.
有什么想法如何在我的控制器中的ActiveRecord Relation元素中获取所有产品?谢谢
UPDATE
所以,当我使用以下内容时:
class Category …Run Code Online (Sandbox Code Playgroud) 我试图让前/后侧div始终朝同一方向翻转.我用css和javascript实现了翻转,但是我很难想到如何让它始终向右旋转,而不是向右旋转然后再向左旋转.
我基本上使用div与后续css
/* flip speed goes here */
.flipper {
-webkit-transition: 0.6s;
-webkit-transform-style: preserve-3d;
-moz-transition: 0.6s;
-moz-transform-style: preserve-3d;
-o-transition: 0.6s;
-o-transform-style: preserve-3d;
transition: 0.6s;
transform-style: preserve-3d;
position: relative;
border-radius: 5px;
-webkit-border-radius: 5px;
padding: 5px;
margin-left: 3px;
z-index: 3;
width: 160px;
height: 145px;
display:block;
}
Run Code Online (Sandbox Code Playgroud)
当用户点击它时,我将"翻转"类添加到div,将css更改为:
/* flip the pane when hovered */
.flip-container.flipped .flipper {
-webkit-transform: rotateY(180deg);
-moz-transform: rotateY(180deg);
-o-transform: rotateY(180deg);
transform: rotateY(180deg);
}
Run Code Online (Sandbox Code Playgroud)
我应该只增加旋转角度吗?还有其他想法吗?
这是当前状态和小提琴中的完整CSS
我正在使用Jquery UI Drag and Drop(http://jqueryui.com/demos/draggable)和https://github.com/furf/jquery-ui-touch-punch 将触摸事件映射到鼠标事件.到目前为止,整个拖放工作正常.
我现在遇到的问题是我有一长串可拖动元素,我需要能够在IPad上滚动列表...当我使列表元素可拖动时,这将不再起作用.
我尝试使用jqueryui提供的约束distance和delay
- 但即使这样,滚动事件似乎完全禁用/覆盖了拖动事件.
我可能需要编写一个自定义函数,例如"只有向左移动至少50 px使其可拖动"或其他东西.
有没有人遇到类似的问题,并愿意分享关于它的som想法?是否有像Sencha或JQmobile这样的其他移动Web框架都配备了这样的功能?
提前致谢...
奇怪的错误在这里,我设置了一个邮件程序,在我的rails3应用程序注册后向用户发送确认,它在几天前工作,现在将它移动到另一台服务器并添加不同的其他功能我今天再次尝试它,我得到这个错误:
OpenSSL::SSL::SSLError in UsersController#create
hostname was not match with the server certificate
Run Code Online (Sandbox Code Playgroud)
我的initializers/setup_mail.rb文件看起来像这样
ActionMailer::Base.delivery_method = :smtp # be sure to choose SMTP delivery
ActionMailer::Base.smtp_settings = {
:address => "mailout.eve-images.de",
:port => 587,
:domain => "eve-images.de",
:user_name => "xxxxxxx-noreply",
:password => "xxxxxxxx",
:authentication => "plain",
:enable_starttls_auto => true
}
Run Code Online (Sandbox Code Playgroud)
我的邮件程序/ user_mailer.rb文件
class UserMailer < ActionMailer::Base
default :from => "no-reply@eve-images.de"
def registration_confirmation(user)
mail(:to => user.email, :subject => "Registered")
end
end
Run Code Online (Sandbox Code Playgroud)
和我的users_controller
def create
@user = User.new(params[:user])
if @user.save
UserMailer.registration_confirmation(@user).deliver
session[:user_id] = @user.id …Run Code Online (Sandbox Code Playgroud) 我有一个帮助方法来获取我的应用程序控制器中的当前购物车:
class ApplicationController < ActionController::Base
protect_from_forgery
helper :all # include all helpers, all the time
private
def current_cart
if session[:cart_id]
@current_cart ||= Cart.find(session[:cart_id])
session[:cart_id] = nil if @current_cart.purchased_at
end
if session[:cart_id].nil?
@current_cart = Cart.create!
session[:cart_id] = @current_cart.id
end
@current_cart
end
end
Run Code Online (Sandbox Code Playgroud)
我可以从大多数视图中调用该方法,但我想在views/layout/application.html.erb文件中使用它,如下所示:
<div id="cart_menu">
<ul>
<li>
<%= image_tag("cart.jpg")%>
</li>
<li>
<%= link_to "#{current_cart.number_of_items}", current_cart_url %>
</li>
<li>
<a href="/checkout/">Checkout</a>
</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
但是当我尝试的时候,我得到了一个
undefined local variable or method `current_cart' for #<#<Class:0x2d2d834>:0x2d2b908>
Run Code Online (Sandbox Code Playgroud)
错误..
任何想法为什么?
我有一个项目模型has_many :tasks.我在rails 3.1中添加了一个嵌套资源,现在尝试使用nested_form gem来编辑项目时添加/删除任务.
我之前在另一个Rails3应用程序中使用了nested_form,它工作正常,但现在我的fields_for部分没有呈现任何东西.
这是我的代码:
#project.rb
class Project < ActiveRecord::Base
attr_accessible :nr, :name, :client_id, :project_status_id, :hidden, :active, :description, :tasks_attributes
has_many :tasks, :dependent => :destroy
accepts_nested_attributes_for :tasks, :reject_if => lambda { |a| a[:name].blank? }, :allow_destroy => true
end
#task.rb
class Task < ActiveRecord::Base
belongs_to :project
end
#views/projects/_form.html.erb
<%= simple_nested_form_for @project do |form| %>
<%= form.input :nr, :label => 'Nr' %>
<%= form.input :name, :label => 'Name' %>
<%= form.association :client, :collection => Client.all(:order => 'name'), …Run Code Online (Sandbox Code Playgroud) ruby-on-rails nested-forms nested-form-for simple-form ruby-on-rails-3.1
我为在nginx上运行的rails应用程序设置了OSX Web服务器.当我手动启动服务器时,rails应用程序工作正常,但是当我重新启动服务器时,我总是收到乘客错误消息
没有这样的文件加载--bundler
我想它必须对我手动设置的Launch Daemon做一些事情:
# /Library/LaunchDaemons/org.nginx.ngnx.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>nginx</string>
<key>UserName</key>
<string>MyUser</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/Cellar/nginx/1.0.11/sbin/nginx</string>
<string>-g</string>
<string>daemon off;</string>
</array>
<key>KeepAlive</key>
<true/>
<key>NetworkState</key>
<true/>
<key>LaunchOnlyOnce</key>
<true/>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
如您所见,我MyUser在plist中使用UserName.nginx服务器在启动后启动并作为MyUser运行,但是我收到此错误消息.
当我在命令行上重启它时,sudo nginx -s stop && nginx一切正常.
有什么想法吗?
编辑
我的nginx.conf看起来像这样:
env GEM_HOME=/usr/local/rvm/gems/ruby-1.9.2-p290@rails311/gems;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 60 60;
send_timeout 120;
recursive_error_pages on;
error_log /var/log/nginx/error.log;
access_log …Run Code Online (Sandbox Code Playgroud) javascript ×2
jquery ×2
actionmailer ×1
activerecord ×1
angularjs ×1
cordova ×1
css3 ×1
ipad ×1
jquery-ui ×1
layout ×1
nested-forms ×1
nested-sets ×1
nginx ×1
passenger ×1
ruby ×1
scaffolding ×1
simple-form ×1
ssl ×1