我有一个带有data-remote="true"属性的Ajax表单,我将其提交给rails中的控制器.
我想要做的是使用jquery-ujs 事件系统在请求发送到服务器之前将数据附加到请求.
像这样的东西:
$("#my_form").bind('ajax:beforeSend', function(xhr, settings){
// serialize some object and append it
});
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何实际标记数据?
编辑这是'xhr'对象在控制台中的样子.
f.Event
currentTarget: DOMWindow
data: undefined
exclusive: undefined
handleObj: Object
handler: function N(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(y,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}
jQuery16103879226385615766: true
liveFired: HTMLDocument
namespace: ""
namespace_re: /(^|\.)(\.|$)/
result: undefined
target: HTMLFormElement
timeStamp: 1306788242911
type: "ajax:beforeSend"
__proto__: Object
Run Code Online (Sandbox Code Playgroud) 当我打电话时,Factory.attributes_for(:some_class)我显然得到了该类的属性哈希.
{ :attribute_one => "hello", :attribute_two => "goodbye" }
Run Code Online (Sandbox Code Playgroud)
有没有一种方便的方法来检索带有字符串键而不是符号的属性哈希?
{ "attribute_one" => "hello", "attribute_two" => "goodbye" }
Run Code Online (Sandbox Code Playgroud) 我怎样才能让JW Player 6找到一个点并在那里暂停,而不会在后续请求中继续播放时失去搜索能力.
例如,以下解决方案并不令人满意,因为它会在每次搜索请求后暂停播放器,而不仅仅是当前搜索请求.
var player = jwplayer('target').setup({
file: '/some-file.mp3'
});
player.onSeek(function(){
player.pause();
});
player.seek(300);
Run Code Online (Sandbox Code Playgroud)
真的,我正在寻找一个简单的API:
player.seek(toTime, pause = false)
Run Code Online (Sandbox Code Playgroud)
请注意,有一个类似的开放式问题涉及JW Player 5.4.
当我尝试在我的Ansible playbook中使用sudo运行任务时,我看到一条错误消息.
这是我的剧本:
---
- hosts: production
gather_facts: no
remote_user: deployer
become: yes
become_method: sudo
become_user: root
tasks:
- name: Whoami
command: /usr/bin/whoami
Run Code Online (Sandbox Code Playgroud)
我希望whoami成为root但任务失败并显示错误消息:
» ansible-playbook -i ansible_hosts sudo.yml --ask-sudo-pass
SUDO password: [I paste my sudo password here]
PLAY [production] *************************************************************
GATHERING FACTS ***************************************************************
fatal: [MY.IP] => Missing become password
TASK: [Whoami] ****************************************************************
FATAL: no hosts matched or all hosts have already failed -- aborting
Run Code Online (Sandbox Code Playgroud)
当我手动ssh到框中并尝试sudo它按预期工作:
» ssh deployer@production
» sudo whoami
[I paste the same sudo password] …Run Code Online (Sandbox Code Playgroud) 我正在使用rails 3构建一个Web应用程序.我有自己的用户注册,登录和身份验证工作正常,我希望添加Oauth 2实现,以便人们可以连接Facebook和登录/注册少步骤.
我有成功的开始.到目前为止,我可以让facebook验证用户身份并允许我访问他们的信息.我还没有尝试过设置Twitter auth,但我认为它会以类似的方式工作.
我现在正在思考的是如何将它集成到我现有的用户模型中,该用户模型基本上由具有电子邮件,名称和密码的用户表组成.
我应该保留我的用户表并设置Access Providers表:
id | user_id | provider_id | access_key
---------------------------------------
1 | 4 | 1 | xyz
2 | 4 | 2 | pqr
3 | 7 | 1 | dfr
Run Code Online (Sandbox Code Playgroud)
并且让我们说一个"用户Facebook信息"表格,其中我存储了有关用户的信息,这些信息是从Facebook图表中访问该用户那里收集到的?
这样我可以使用每个用户所拥有的核心信息来规范用户表,无论他们是否通过Facebook连接(姓名,电子邮件,密码),并使用他们的Facebook个人资料中的数据补充该数据(如果可用)?
有一个更好的方法吗?是否有一个很好的指南或教程来设计这种类型的数据库模型(想想Quora)?我也可以处理PHP教程了!
抱歉,这是一个开放式问题.
我正在尝试设置rails应用程序以使用Paypal网站支付标准.我宁愿用户点击按钮并在Paypal网站上而不是在我的网站上提交他们的信息,但我想使用ActiveMerchant进行测试模式和凭证处理.
我在网上找到的所有信息都描述了如何使用ActiveMerchant让用户在您网站的表单中填写详细信息,并使用Paypal API为他们的卡充电.Ryan bates有网络演员使用网站支付标准方法,但他没有利用ActiveMerchant的方法.
我想我的应用中正确设置了ActiveMerchant:
# config/environments/development.rb
config.after_initialize do
ActiveMerchant::Billing::Base.mode = :test
::GATEWAY = ActiveMerchant::Billing::PaypalGateway.new(
login: 'dgesf_1313616880_biz_api1.gmail.com',
password: '1313616919',
signature: 'AKXgGVsxct8DAOfYpyE73guXzPo1ACa185mHcgzMcYOCJsNYSJ0NflAF'
)
end
Run Code Online (Sandbox Code Playgroud)
但是如何生成一个表单,该表单将使用上述信息将我的详细信息(项目价格,名称等)发布到正确的Paypal URL,以便他们可以构建页面,向用户显示项目详细信息并允许他输入支付信息?
我可以使用ActiveMerchant伪造Paypal IPN通知并测试我的应用处理它们吗?
paypal ruby-on-rails payment-gateway activemerchant ruby-on-rails-3
我有一个Web应用程序,它是Rails和部分Backbone的一部分.我实现的评论系统等一些东西主要是在客户端的Javascript中编写的.Rails后端只是通过来回传递JSON来处理持久性.
当我从服务器渲染页面时,处理谁可以看到什么是容易的.我可以说像
<li class="comment">
<span class="comment_text"><%= @comment.text %></span>
<% if user_signed_in? and current_user == @comment.author %>
<a class="delete" href="some delete url">Delete Comment</a>
<% end %>
</li>
Run Code Online (Sandbox Code Playgroud)
如果当前用户是评论的作者,那么只会呈现删除特定评论的链接.没问题.
但是,现在我正在使用JavaScript模板(缓存为afaik)在客户端呈现注释,我无权访问current_user.我不知道当前使用我的应用程序的用户是否是评论的作者,所以我无法控制他看到的内容.
当然,他无法以任何方式删除评论,因为我也在服务器上授权,但我宁愿不首先显示链接.
我怎么能做到这一点?
我喜欢这个主题的资源和答案的一些链接,因为我似乎找不到任何,即使在我看来这是一个应该在无数博客中涵盖的主题.
我的应用程序有一个Job模型.系统中的每个工作都有一个contact.如果您需要询问有关工作的问题,这就像您打电话的人.联系人可以是client客户(或)的雇员(ClientEmployee).
class Job < ActiveRecord::Base
belongs_to :contact, polymorphic: true
end
class Client < ActiveRecord::Base
has_many :jobs, as: :contact
has_many :employees, class_name: 'ClientEmployee'
end
class ClientEmployee < ActiveRecord::Base
belongs_to :client
has_many :jobs, as: :contact
end
Run Code Online (Sandbox Code Playgroud)
客户有这个想法commissioned_jobs.客户委托的工作是那些客户是联系人的工作,或者客户的一个员工是联系人.
class Client < ActiveRecord::Base
has_many :jobs, as: :contact
has_many :employee_jobs, through: :employees, source: :jobs
def commissioned_jobs
jobs << employee_jobs
end
end
Run Code Online (Sandbox Code Playgroud)
旁白:这个方法有点像黑客,因为它返回一个数组而不是一个数组ActiveRecord::Relation.有趣的是,如果我尝试将作业连接到employee_jobs,它就会爆炸.它可能会或可能不会为我的目的.
我想添加一个范围来Client调用with_commissioned_jobs.这应该返回系统中有工作或有员工的所有客户.
class Client < ActiveRecord::Base
def self.with_commissioned_jobs
# I …Run Code Online (Sandbox Code Playgroud) activerecord ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2
我有一个由rails后端驱动的Backbone应用程序.我有一个Invitation资源,我可以通过向邀请控制器的创建操作发送POST请求来发送邀请.
我的Backbone模型看起来像这样(coffeescript):
class Invitation extends Backbone.Model
urlRoot: '/invitations'
Run Code Online (Sandbox Code Playgroud)
然后是表单发送邀请的模板.我试图尽可能接近普通的rails形式,因为看起来Rails最好处理:
<form action="/invitations" accept-charset="UTF-8" id="new_invitation" class="new_invitation" method="post">
<input id="invitation_recipient_name" class="invitation_recipient_name" type="text" name="invitation[recipient_name]" />
<input id="invitation_recipient_email" class="invitation_recipient_email" type="text" name="invitation[recipient_email]" />
<input type="submit" class="btn primary" name="commit" id="invite" value="Send Invitation" />
</form>
Run Code Online (Sandbox Code Playgroud)
这是我的模型和模板的Backbone View
class InvitationView extends Backbone.View
# this is the template shown above
template: JST['backbone/templates/invitation']
events:
'click #invite': 'sendInvite'
render: ->
$(this.el).html this.template()
this
sendInvite: (e) ->
e.preventDefault()
name = this.$('#invitation_recipient_name')
email = this.$('#invitation_recipient_email')
this.model.save
recipient_name: name.val()
recipient_email: email.val()
Run Code Online (Sandbox Code Playgroud)
问题是当我单击提交按钮并sendInvite …
javascript ruby-on-rails javascript-framework backbone.js ruby-on-rails-3
几个小时以来一直在与这个摔跤,Docs似乎很糟糕.基本上我正在尝试使用Portable Contacts API或完整的Contacts API获取对OAuth2经过身份验证的用户联系人的读取权限.谷歌最近开始允许使用OAuth2.
通过首先让用户对范围进行身份验证,我可以通过Contacts API访问用户联系人:"https://www.google.com/m8/feeds".然后我可以使用jQuery检索他们的前25个联系人(显示的代码是CoffeeScript)
$.ajax
url: "https://www.google.com/m8/feeds/contacts/default/full"
dataType: 'jsonp'
data: { access_token: token, alt: 'json-in-script' }
success: (data, status) ->
console.log "The returned data", data
Run Code Online (Sandbox Code Playgroud)
这有效,我得到JSON数据.然而,令人难以置信的差不多,唯一的接触下令谷歌提供了(据我可以告诉)是" 上次更改 "(严重跆拳道?).我需要更像"顶级朋友"或"最受欢迎"的东西.
这恰好是Google Portable Contacts API 可以做的事情(耶!).当然,我似乎无法获得成功的工作要求.
首先,我通过单击此链接让用户通过便携式联系人API进行身份验证(请注意范围:"https://www-opensocial.googleusercontent.com/api/people")
<a href="https://accounts.google.com/o/oauth2/authclient_id=457681297736.apps.googleusercontent.com&response_type=token&redirect_uri=http://localhost:3000/team&scope=https://www-opensocial.googleusercontent.com/api/people">Import Google Contacts</a>
Run Code Online (Sandbox Code Playgroud)
这工作正常,我得到一个访问令牌传回.
接下来,我尝试向便携式联系人API发送ajax请求
$.ajax
url: "https://www-opensocial.googleusercontent.com/api/people/@me/@all"
dataType: 'jsonp'
data: { access_token: token, alt: 'json-in-script' }
success: (data, status) ->
console.log "The returned data", data
Run Code Online (Sandbox Code Playgroud)
但是返回403错误
403 (The currently logged in …Run Code Online (Sandbox Code Playgroud) javascript ×4
backbone.js ×2
oauth-2.0 ×2
activerecord ×1
ansible ×1
facebook ×1
factory-bot ×1
flash ×1
html5 ×1
jquery ×1
jwplayer ×1
oauth ×1
paypal ×1
ruby ×1
sudo ×1
video ×1