小编Jon*_*lla的帖子

Rails 4.1.5 omniauth强参数

将Rails 4.1.4升级到4.1.5后,我的facebook omniauth会话出错,从那时起一切正常.当我创建用户会话时,我得到了一个ActiveModel::ForbiddenAttributesError

路线:

  match 'auth/:provider/callback', to: 'sessions#create', as: 'signin', via: :get
Run Code Online (Sandbox Code Playgroud)

Session#创建控制器:

  def create
        user = User.from_omniauth(env["omniauth.auth"])
        session[:user_id] = user.id 
        session[:user_name] = user.name

      redirect_to root_path
  end
Run Code Online (Sandbox Code Playgroud)

和这样的用户模型:

  def self.from_omniauth(auth)
    where(auth.slice(:provider, :uid)).first_or_create.tap do |user|
      user.provider ||= auth.provider 
      user.uid = auth.uid
      user.name = auth.info.name
      user.save
    end
  end
Run Code Online (Sandbox Code Playgroud)

我可以通过添加许可来绕过ActiveModel错误!我的用户模型中的方法是这样的:

where(auth.slice(:provider, :uid).permit!).first_or_create.tap do |user|
Run Code Online (Sandbox Code Playgroud)

但是它覆盖了数据库中的第一个用户... session[:user_id]似乎总是数据库中的第一个用户.

我不知道这是一个强大的参数问题,一个Omniauth问题还是两者兼而有之?

facebook ruby-on-rails strong-parameters omniauth-facebook

19
推荐指数
2
解决办法
6535
查看次数

第二次点击后有时会调用UITableView didSelectRowAtIndexPath

我面临一种奇怪的UITableView行为,我不知道这是从哪里来的.我正在构建一个非常简单的单视图IOS8 Swift应用程序,第一个ViewController带有UITableView内部和一个自定义Image单元.当我点击一个单元格时,它会盯着我SecondViewController.

我的UITableView委托和数据源连接到第一个ViewController.一切都在工作,除非我点击一个单元格,有时我必须点击它两次才能触发Segue.

这是我的didSelectRowAtIndexPath功能:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    println("You clicked on \(indexPath.row) row")
    self.performSegueWithIdentifier("homeToDetail", sender:self)
}
Run Code Online (Sandbox Code Playgroud)

我的打印始终返回正确的indexPath.它是一个视图层次结构问题还是其他什么?

谢谢JD

iphone uitableview ios segue swift

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

正则表达式匹配包括新线

我有一个正则表达式来抓住之间的一切"*":

str = "Donec sed odio dui. *Nullam id dolor id nibh ultricies vehicula ut*"
str.match(/\*(.*)\*/)[1]
Run Code Online (Sandbox Code Playgroud)

我希望匹配能够包含换行符.我该怎么做?

ruby regex

5
推荐指数
1
解决办法
3395
查看次数

Rails 4嵌套在更新时属性多个记录

我被卡住了,我不知道为什么它不能正常工作.我有一个有许多标签的模型产品.当我更新产品rails时,正确更新产品属性,但是正在创建另一个标记记录,而不仅仅是更新它.

这是我的代码:

查看表格:

 <%= form_for ([@product.user, @product]), id: 'edit_form' do |f| %>
      <%= render 'shared/error_messages', object: f.object %>

      <div class="field">
        <%= f.label :name %><br>
        <%= f.text_field :name %>
      </div>
      <div class="field">
        <%= f.label :description %><br>
        <%= f.text_area :description %>
      </div>

      <div class="field">
        <%= f.fields_for :tags do |t| %>
          <%= t.label :name %>
          <%= t.text_field :name %>
        <% end %>
      </div>


      <div class="actions">
        <%= f.submit %>
      </div>
    <% end %>
Run Code Online (Sandbox Code Playgroud)

产品型号:

 class Product < ActiveRecord::Base

      belongs_to :user, :foreign_key => "user_id"
      has_many …
Run Code Online (Sandbox Code Playgroud)

ruby nested ruby-on-rails ruby-on-rails-4

4
推荐指数
1
解决办法
6281
查看次数

Facebook SDK和rails 4 Turbolinks

我很难尝试将javascript Facebook SDK加载到我的rails 4应用程序中.有没有一种方法可以让它与turbolinks一起正常工作?

如果我在我的JS应用程序资产上添加此代码.由于turbolinks,它无法正常工作:

<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    // init the FB JS SDK
    FB.init({
      appId      : 'YOUR_APP_ID',                        // App ID from the app dashboard
      channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel file for x-domain comms
      status     : true,                                 // Check Facebook Login status
      xfbml      : true                                  // Look for social plugins on the page
    });

    // Additional initialization code such as adding Event Listeners goes here
  };

  // Load the SDK asynchronously
  (function(d, s, id){
     var js, …
Run Code Online (Sandbox Code Playgroud)

facebook ruby-on-rails turbolinks

4
推荐指数
2
解决办法
3512
查看次数

Rails mailboxer gem,使用表单向用户发送消息

我已将mailboxer gem安装到我的rails应用程序中.当我在控制台中使用它时,它成功运行.例:current_user.send_message(User.last, "Body", "subject")

但我想知道如何使它与表单视图和控制器一起工作.我希望能够通过视图传递send_message参数并将其发送到消息或会话控制器.

我不知道处理这个神奇宝石的正确方法.提前致谢

JD

gem ruby-on-rails mailboxer

2
推荐指数
1
解决办法
1837
查看次数