我的嵌套模型表单在第一级深度工作得很好.但我的印象是你可以使用accepts_nested_attributes_for深入了解多个级别.但是,当我尝试下面的代码时,"图像"属性被附加到顶级"问题"模型,它会在表单提交时因未知属性"图像"错误而中断.
我可以使用表单数据手动完成插入,但如果Rails可以自动处理它,那么显然会有更好的理由.
我究竟做错了什么?我试着改变| af | 在"字段为:图像做"到它自己的唯一名称,但它没有任何影响.
楷模:
class Question < ActiveRecord::Base
has_one :answer
accepts_nested_attributes_for :answer
end
class Answer < ActiveRecord::Base
belongs_to :question
has_one :image
accepts_nested_attributes_for :image
end
class Image < ActiveRecord::Base
belongs_to :answer
end
Run Code Online (Sandbox Code Playgroud)
控制器:
def new
@question = Question.new
answer = @question.build_answer
image = answer.build_image
@case_id = params[:id]
render :layout => 'application', :template => '/questions/form'
end
def create
question_data = params[:question]
@question = Question.new(question_data)
if @question.save
...
end
Run Code Online (Sandbox Code Playgroud)
视图:
= form_for @question, :html => {:multipart => true} do |f| …Run Code Online (Sandbox Code Playgroud) 简单的问题,但我的谷歌搜索完全失败了我.
如何更改Heroku Rails应用程序的postgres数据库的密码?
正如标题所说,我正在尝试使用Heroku和Rails 3进行简单的电子邮件.我正在使用这个Heroku指南:http: //devcenter.heroku.com/articles/smtp
这是我的代码:
我生成了一个看起来像这样的邮件:
class Invite < ActionMailer::Base
def signup_notification(user)
recipients "#{user.first_name} <#{user.email}>"
from "Test"
subject "Please activate your new account"
sent_on Time.now
body :var => 'testing'
end
end
Run Code Online (Sandbox Code Playgroud)
我有一个观点 app/views/invite/signup_notification.rhtml
更新:我看到这.rhtml不适用于Rails 3所以我只是尝试.html.erb但我得到了相同的错误.
Your account has been created.
Username:
Password:
Visit this url to activate your account:
Run Code Online (Sandbox Code Playgroud)
然后在Heroku控制台中我这样做了:
user = User.new(:first_name => 'Me', :email => 'me@hotmail.com', :login => 'me', :password => '1234')
Run Code Online (Sandbox Code Playgroud)
然后这个:
Invite.deliver_signup_notification(user)
Run Code Online (Sandbox Code Playgroud)
如果得到这个错误:
Net::SMTPSyntaxError: 501 Syntax error
/user/ruby1.8.7/lib/ruby/1.8/net/smtp.rb:930:in …Run Code Online (Sandbox Code Playgroud) 我在我的网页上显示谷歌地图,它在除Safari之外的所有浏览器中都能正常工作.
Safri白了一页,JS错误说:
TypeError: Result of expression 'document.body' [null] is not an object. maps.google.com/maps/api/js?sensor=true®ion=nz&async=2&callback=initializeConfigMap:11
TypeError: Result of expression 'a' [null] is not an object. maps.gstatic.com/intl/en_us/mapfiles/api-3/5/11/main.js:30
Run Code Online (Sandbox Code Playgroud)
这似乎来自的代码是我使用此行从谷歌链接到的脚本:
$.getScript("http://maps.google.com/maps/api/js?sensor=true®ion=nz&async=2&callback=initializeConfigMap", function () {});
Run Code Online (Sandbox Code Playgroud)
该脚本如下所示:
window.google = window.google || {};
google.maps = google.maps || {};
(function() {
function getScript(src) {
var s = document.createElement('script');
s.src = src;
document.body.appendChild(s);
}
var modules = google.maps.modules = {};
google.maps.__gjsload__ = function(name, text) {
modules[name] = text;
};
google.maps.Load = function(apiLoad) {
delete google.maps.Load;
apiLoad([null,[[["http://mt0.googleapis.com/vt?lyrs=m@158\u0026src=api\u0026hl=en-US\u0026","http://mt1.googleapis.com/vt?lyrs=m@158\u0026src=api\u0026hl=en-US\u0026"],null,null,null,null,"m@158"],[["http://khm0.googleapis.com/kh?v=88\u0026hl=en-US\u0026","http://khm1.googleapis.com/kh?v=88\u0026hl=en-US\u0026"],null,null,null,1,"88"],[["http://mt0.googleapis.com/vt?lyrs=h@158\u0026src=api\u0026hl=en-US\u0026","http://mt1.googleapis.com/vt?lyrs=h@158\u0026src=api\u0026hl=en-US\u0026"],null,null,"imgtp=png32\u0026",null,"h@158"],[["http://mt0.googleapis.com/vt?lyrs=t@127,r@158\u0026src=api\u0026hl=en-US\u0026","http://mt1.googleapis.com/vt?lyrs=t@127,r@158\u0026src=api\u0026hl=en-US\u0026"],null,null,null,null,"t@127,r@158"],null,[[null,0,7,7,[[[330000000,1246050000],[386200000,1293600000]],[[366500000,1297000000],[386200000,1320034790]]],["http://mt0.gmaptiles.co.kr/mt?v=kr1.14\u0026hl=en-US\u0026","http://mt1.gmaptiles.co.kr/mt?v=kr1.14\u0026hl=en-US\u0026"]],[null,0,8,9,[[[330000000,1246050000],[386200000,1279600000]],[[345000000,1279600000],[386200000,1286700000]],[[348900000,1286700000],[386200000,1293600000]],[[354690000,1293600000],[386200000,1320034790]]],["http://mt0.gmaptiles.co.kr/mt?v=kr1.14\u0026hl=en-US\u0026","http://mt1.gmaptiles.co.kr/mt?v=kr1.14\u0026hl=en-US\u0026"]],[null,0,10,19,[[[329890840,1246055600],[386930130,1284960940]],[[344646740,1284960940],[386930130,1288476560]],[[350277470,1288476560],[386930130,1310531620]],[[370277730,1310531620],[386930130,1320034790]]],["http://mt0.gmaptiles.co.kr/mt?v=kr1.14\u0026hl=en-US\u0026","http://mt1.gmaptiles.co.kr/mt?v=kr1.14\u0026hl=en-US\u0026"]],[null,3,7,7,[[[330000000,1246050000],[386200000,1293600000]],[[366500000,1297000000],[386200000,1320034790]]],["http://mt0.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026","http://mt1.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026"]],[null,3,8,9,[[[330000000,1246050000],[386200000,1279600000]],[[345000000,1279600000],[386200000,1286700000]],[[348900000,1286700000],[386200000,1293600000]],[[354690000,1293600000],[386200000,1320034790]]],["http://mt0.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026","http://mt1.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026"]],[null,3,10,null,[[[329890840,1246055600],[386930130,1284960940]],[[344646740,1284960940],[386930130,1288476560]],[[350277470,1288476560],[386930130,1310531620]],[[370277730,1310531620],[386930130,1320034790]]],["http://mt0.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026","http://mt1.gmaptiles.co.kr/mt?v=kr1p.12\u0026hl=en-US\u0026"]]],[["http://cbk0.googleapis.com/cbk?","http://cbk1.googleapis.com/cbk?"]],[["http://khmdb0.googleapis.com/kh?v=40\u0026hl=en-US\u0026","http://khmdb1.googleapis.com/kh?v=40\u0026hl=en-US\u0026"],null,null,null,null,"40"],[["http://mt0.googleapis.com/mapslt?hl=en-US\u0026","http://mt1.googleapis.com/mapslt?hl=en-US\u0026"]],[["http://mt0.googleapis.com/mapslt/ft?hl=en-US\u0026","http://mt1.googleapis.com/mapslt/ft?hl=en-US\u0026"]],[["http://mt0.googleapis.com/vt?hl=en-US\u0026","http://mt1.googleapis.com/vt?hl=en-US\u0026"]]],["en-US","NZ",null,0,null,"http://maps.google.com","http://maps.gstatic.com/intl/en_us/mapfiles/","http://csi.gstatic.com","https://maps.googleapis.com","http://maps.googleapis.com"],["http://maps.gstatic.com/intl/en_us/mapfiles/api-3/5/11","3.5.11"],[3021543403],1.0,null,null,null,null,1,"initializeConfigMap",null,null,0,"http://khm.googleapis.com/mz?v=88\u0026"], loadScriptTime);
};
var loadScriptTime …Run Code Online (Sandbox Code Playgroud) 我正在尝试在另一个视图中呈现Devise编辑密码表单,因为我不想复制编辑pw逻辑.
我尝试了以下(生成Devise视图后):
<%= render 'devise/passwords/edit' %>
<%= render 'devise/passwords/form' %>
Run Code Online (Sandbox Code Playgroud)
渲染上的其他一些变体似乎都给了我同样的错误:
"foo中的ActionView :: MissingTemplate #foo缺少部分设计/密码/编辑......"
这种变化:
<%= render :file => 'devise/passwords/edit.html.erb' %>
Run Code Online (Sandbox Code Playgroud)
给了我一些希望,但以下错误:
"##:0x47ef0e0>"的未定义局部变量或方法"资源"
围绕这条线:
<%= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :put }) do |f| %>
Run Code Online (Sandbox Code Playgroud)
这让我觉得我很接近(因为那是我想要的表单中的代码)但是该模板不应该使用隐藏的Devise控制器中的正确逻辑吗?或者我是否需要在路线文件中执行某些操作才能使其生效?
我离开了吗?
我在Windows 7本地运行web2py并在Linux Ubuntu服务器上运行,但我无法让我的cron作业运行.
我的crontab看起来像这样:
*/1 * * * * root *autoemail/send_autoemails
Run Code Online (Sandbox Code Playgroud)
并且我的功能在手动调用时工作正常.它也以
db.commit()
Run Code Online (Sandbox Code Playgroud)
除此之外,我不知道还有什么可以让它工作,虽然我真的不了解Cron上的所有web2py书籍部分,特别是涉及到软/硬/外部cron以及所有这些.
我看到一个web2py线程,也许cron将被替换?
也许这与此有关?在配置cron之前我还需要做些什么吗?
关于如何解决这个问题的任何想法都非常感谢.
在克隆我的第一个Rails 3.1.1应用程序时,我的第一个bundle install在eventmachine 0.12.10 gem上被阻塞了.(我正在运行Windows 7 32位)
我也使用宝石'瘦'.
我发现这篇帖子有同样的问题.
哪个版本的eventmachine能够在Windows中运行?
我在我的gemfile中集成了这一行:
gem "eventmachine", ">= 1.0.0.beta"
Run Code Online (Sandbox Code Playgroud)
这允许捆绑安装运行,但是当我启动rails服务器时,我得到一个带有头文件ruby.exe的Ruby弹出窗口 - 系统错误和文本
The program can't start because libgcc_s_sjlj-1.dll is missing from your computer. Try reinstalling the program to fix this problem.
Run Code Online (Sandbox Code Playgroud)
单击"确定"后,我在控制台中收到此消息
Unable to load the EventMachine C extension; To use the pure-ruby reactor, require 'em/pure_ruby'
Run Code Online (Sandbox Code Playgroud)
然后是一个长堆栈跟踪(请求查看您是否认为这将有所帮助).
我看到EventMachine gem需要一个C++编译器.我在32位Windows 7机器上重新安装了MinGW,并将MinGW\bin添加到我的PATH变量中.
但是,当我查看该bin文件夹时,文件libgcc_s_sjlj-1.dll不存在,并且仍然存在相同的错误消息.我发现这个帖子关于2009年该文件夹的缺失,但我不确定该怎么做.
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=539033
感谢你给与我的帮助.
我正在使用Linonde来托管我的git repos以及实际的站点文件.
git branch -r看起来像这样:
company/master
company/stage
origin/HEAD -> origin/master
origin/master
prod/master
Run Code Online (Sandbox Code Playgroud)
git branch看起来像这样:
master
stage
Run Code Online (Sandbox Code Playgroud)
我想我只是想让我的本地舞台分支指向我的公司/主人.当我这样做git push company stage它似乎更新我的服务器上的舞台头,但我想让它更新主头,这是我的网站似乎服务它的文件来自.或者我需要弄清楚如何将我的网站指向公司/舞台主管.
我试着删除我的分支并制作一个
git branch stage company/master
Run Code Online (Sandbox Code Playgroud)
因为我认为起点可能就是我所需要的.
在我尝试推送之后,我得到消息:
error: failed to push some refs to 'root@foo:~repos/project_name'
To Prevent you from losing history, non-fasst-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.)
Run Code Online (Sandbox Code Playgroud)
我试了一下,git pull但它说一切都是最新的,我在快进的帮助文档中找不到任何解决我的情况的东西.
我有一个包含参数的javascript函数.
<a href="#" onclick="changeAvatar(0684839741);">Click here</a>
Run Code Online (Sandbox Code Playgroud)
我需要将该参数作为一个字符串,因为有时会有Letters或一个前导0,我将需要像本示例中那样保留.
我检查以确保传入的参数是一个字符串
x.constructor === String
Run Code Online (Sandbox Code Playgroud)
但是在我的changeAvatar函数中,参数不再是字符串.相反,它是一个数字,如果它包含一个字母,则删除前导零或中断.
如何获得保留其类型的参数?
heroku ×2
javascript ×2
branch ×1
c++ ×1
cron ×1
crontab ×1
devise ×1
eventmachine ×1
forms ×1
gem ×1
git ×1
google-maps ×1
head ×1
linode ×1
object-type ×1
postgresql ×1
web2py ×1
windows-7 ×1