将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问题还是两者兼而有之?
我面临一种奇怪的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
我有一个正则表达式来抓住之间的一切"*":
str = "Donec sed odio dui. *Nullam id dolor id nibh ultricies vehicula ut*"
str.match(/\*(.*)\*/)[1]
Run Code Online (Sandbox Code Playgroud)
我希望匹配能够包含换行符.我该怎么做?
我被卡住了,我不知道为什么它不能正常工作.我有一个有许多标签的模型产品.当我更新产品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) 我很难尝试将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) 我已将mailboxer gem安装到我的rails应用程序中.当我在控制台中使用它时,它成功运行.例:current_user.send_message(User.last, "Body", "subject")
但我想知道如何使它与表单视图和控制器一起工作.我希望能够通过视图传递send_message参数并将其发送到消息或会话控制器.
我不知道处理这个神奇宝石的正确方法.提前致谢
JD