小编Dav*_*ite的帖子

如何将数据附加到Rails中的jquery-ujs post请求?

我有一个带有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)

jquery ruby-on-rails ruby-on-rails-3

9
推荐指数
1
解决办法
5184
查看次数

工厂女孩用字符串属性键而不是符号?

当我打电话时,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)

ruby ruby-on-rails factory-bot

9
推荐指数
2
解决办法
2075
查看次数

JW Player 6寻求并暂停

我怎样才能让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.

javascript flash video html5 jwplayer

9
推荐指数
1
解决办法
2467
查看次数

在sudoing时失踪成为密码

当我尝试在我的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)

sudo ansible

9
推荐指数
1
解决办法
3087
查看次数

使用Oauth 2为用户建模

我正在使用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教程了!

抱歉,这是一个开放式问题.

facebook oauth oauth-2.0 ruby-on-rails-3

8
推荐指数
1
解决办法
604
查看次数

如何使用ActiveMerchant进行Paypal网站支付标准?

我正在尝试设置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

8
推荐指数
1
解决办法
2119
查看次数

如何在客户端管理当前用户会话?

我有一个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.我不知道当前使用我的应用程序的用户是否是评论的作者,所以我无法控制他看到的内容.

当然,他无法以任何方式删除评论,因为我也在服务器上授权,但我宁愿不首先显示链接.

我怎么能做到这一点?

我喜欢这个主题的资源和答案的一些链接,因为我似乎找不到任何,即使在我看来这是一个应该在无数博客中涵盖的主题.

javascript authentication ruby-on-rails backbone.js

8
推荐指数
1
解决办法
6535
查看次数

通过多态关联查询连接ActiveRecord :: Relations

我的应用程序有一个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

8
推荐指数
1
解决办法
2342
查看次数

没有收集的骨干模型.将重复数据发送到服务器?

我有一个由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

7
推荐指数
1
解决办法
1714
查看次数

Google通过OAuth2身份验证与JavaScript客户端联系API问题

几个小时以来一直在与这个摔跤,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 google-contacts-api oauth-2.0

7
推荐指数
1
解决办法
4167
查看次数