小编Cra*_*uff的帖子

覆盖设计注册控制器

我在注册表单中添加了一个基于不同模型的字段,请参阅如何将嵌套属性与设计模型一起用于血淋淋的细节.这部分工作正常.

现在的问题是当我保存时,它在注册控制器的创建操作中失败,该操作由设备提供,Activerecord::UnknownAttributeError在该字段(公司)上.

我假设我需要覆盖注册控制器,还是有更好/更简单的方法我应该接近这个?

ruby-on-rails devise

231
推荐指数
5
解决办法
17万
查看次数

使用JQuery UI Datepicker与来自Jquery UI主题的图标

我有一个使用JQuery UI的datepicker控件设置,我也使用JQuery UI主题,它提供了一堆我想要使用的默认图标.

DatePicker允许指定特定图像,即:

<script type="text/javascript">
  $(document).ready(function() {
    $("#DateFrom").datepicker({ showOn: 'button', buttonImageOnly: true, buttonImage: 'images/ui-icon-calendar.png' });
  });
</script>  
Run Code Online (Sandbox Code Playgroud)

要显示图标集中的图标,请使用以下内容:

<span class="ui-icon ui-icon-calendar"></span>
Run Code Online (Sandbox Code Playgroud)

是否有一个易于集成的两个或我只需要手动破解样式/图像?

javascript css jquery-ui

29
推荐指数
3
解决办法
9万
查看次数

如何在设计模型中使用嵌套属性

我有与使用Devise创建其他相关模型(没有答案)相同的问题.

我已经覆盖了创建新用户的设计视图并添加了公司名称,我已将模型更改为使用accepts_nested_attributes_for

没有错误,但它没有添加嵌套记录,我没有可以修改请求的控制器.

我有以下内容(缩短为使其可读):

的routes.rb

map.devise_for :users
map.resources :users, :has_many => :companies
Run Code Online (Sandbox Code Playgroud)

user.rb

has_many :companies
accepts_nested_attributes_for :companies
devise :registerable ... etc
Run Code Online (Sandbox Code Playgroud)

company.rb

belongs_to :user
Run Code Online (Sandbox Code Playgroud)

new.html.erb

...
<% form_for resource_name, resource, :url => registration_path(resource_name) do |f| %>
...
  <% f.fields_for :company do |company_form| %>
    <p><%= company_form.label :name %></p>
    <p><%= company_form.text_field :name %></p>
  <% end %>
...
Run Code Online (Sandbox Code Playgroud)

更新:我没有添加:company到User模型中的attr_accessible列表.

ruby-on-rails devise

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

MVC自定义ViewModel和自动绑定

我将自定义ViewModel定义为:

public class SampleFormViewModel
{
    public SampleFormViewModel(SelectList companies, Widget widget)
    {
        Companies = companies;
        Widget = widget;
    }

    public SelectList Companies { get; private set; }
    public Widget Widget { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)

在我的编辑POST处理程序中,我有以下条目:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(SampleFormViewModel model)
{
Run Code Online (Sandbox Code Playgroud)

编辑表单设置为:

Inherits="System.Web.Mvc.ViewPage<Sample.Web.Models.SampleFormViewModel>"
Run Code Online (Sandbox Code Playgroud)

它只是爆炸,不知道发生了什么,有以下错误:没有为此对象定义无参数构造函数.某些我错过了一些非常明显的东西.一些背景,GET完美运行并按预期显示SelectList的下拉列表.我猜测自动绑定回自定义视图模型是失败但不知道该怎么做.

asp.net-mvc binding viewmodel

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

使用rails 3中的devise和acts_as_tenant的用户的唯一性

我正在使用acts_as_tenant gem来管理多租户,而我正在使用devise来管理用户.

我只为租户设置了用户模型和帐户模型.我可以针对多个租户创建用户 - 这一切都正常工作除了当我尝试使用相同的电子邮件创建两个用户对不同的租户ID时,我得到了一个单一性错误.我正在使用所述的validates_uniqueness_to_tenant选项.

用户模型

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable,
  # :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  attr_accessible :email, :password, :password_confirmation, :remember_me

  acts_as_tenant(:account)
  validates_uniqueness_to_tenant :email
end
Run Code Online (Sandbox Code Playgroud)

帐户模型

class Account < ActiveRecord::Base
  attr_accessible :name
end
Run Code Online (Sandbox Code Playgroud)

应用控制器

class ApplicationController < ActionController::Base
  set_current_tenant_by_subdomain(:account, :subdomain)
  protect_from_forgery
end
Run Code Online (Sandbox Code Playgroud)

看起来它应该基于acts_as_tenant中的所有文档工作,我是否需要在设计级别覆盖某些内容?

编辑:经过一些头疼和一点休息后,问题是我相信,因为默认情况下,Devise为电子邮件列添加了一个唯一索引.这显然不会影响act_as_tenant想做什么...我会尝试删除索引,看看Devise是否呕吐.

编辑2:好的,现在已经正式放弃了.我对主站点进行了手动滚动身份验证,这与acts_as_tenant一起正常运行.我只能假设在某个层面上acts_as_tenant和Devise之间存在一些不兼容性 - 除了我在这个阶段找到它.

multi-tenant devise ruby-on-rails-3

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

Rails将request.subdomain传递给自定义Devise邮件程序布局

我需要调整忘记密码指令来处理子域.我已按照设备网站上的说明覆盖邮件程序,控制器并添加子域帮助程序等,如下所示:

控制器/ password_controller.rb

class PasswordsController < Devise::PasswordsController
  def create
    @subdomain = request.subdomain
    super
  end
end
Run Code Online (Sandbox Code Playgroud)

的routes.rb

devise_for :users, controllers: { passwords: 'passwords' }
Run Code Online (Sandbox Code Playgroud)

devise.rb

config.mailer = "UserMailer"
Run Code Online (Sandbox Code Playgroud)

邮寄/ user_mailer.rb

class UserMailer < Devise::Mailer
  helper :application # gives access to all helpers defined within `application_helper`.

  def confirmation_instructions(record, opts={})
    devise_mail(record, :confirmation_instructions, opts)
  end

  def reset_password_instructions(record, opts={})
    devise_mail(record, :reset_password_instructions, opts)
  end

  def unlock_instructions(record, opts={})
    devise_mail(record, :unlock_instructions, opts)
  end

end
Run Code Online (Sandbox Code Playgroud)

视图/ user_mailer文件/ reset_password_instructions.html.erb

<p>Hello <%= @resource.email %>!</p>

<p>Someone has requested a link to change …
Run Code Online (Sandbox Code Playgroud)

devise ruby-on-rails-3

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

LINQ加入查找不在列表中的项目

如何在可查询和不可查询数据中使用LINQ?

使用以下代码,我想得到一个未选择用户的列表,即所有用户中未被选中的所有用户.

public IQueryable<CompanyUser> FindAllUsersNotAssignedTothisCompany(int companyID)
{
    var allUsers = Membership.GetAllUsers();
    var selected = db.CompanyUsers.Where(c => c.CompanyID == companyID);
    ...?
}
Run Code Online (Sandbox Code Playgroud)

我实际上想要一个适合在DropDownList(ASP.NET MVC)中使用的用户ID和名称列表

c# linq

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

某些rails命令比直接HTML更有用

有人可以解释为什么我使用rails link_to等而不是直接的HTML代码吗?鉴于他们一旦到达浏览器就会呈现相同的内容 - 这里的实际好处是什么?

<a href="index.html"><img id="logo" src="images/logo.png" alt="logo" /></a>

<%= link_to image_tag("logo.png", :alt => "logo", :id => "logo"), root_path %>              
Run Code Online (Sandbox Code Playgroud)

背景 - 我在模板中更改了这个并停下来想想为什么我这样做?

html ruby-on-rails-3

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

使用Devise注销用户也会注销AdminUser

我正在使用Devise作为我的用户模型.我也在使用ActiveAdmin,它也使用Devise以及AdminUser模型.

我可以使用admin_user和用户彼此独立登录,但我注意到如果我退出用户,AdminUser也会退出.如果我将其反转并首先注销AdminUser,也会发生同样的事情.

我有什么办法可以解决这个问题呢?

的routes.rb

devise_for :admin_users, ActiveAdmin::Devise.config
devise_for :users
get "dashboard/home"
Run Code Online (Sandbox Code Playgroud)

ApplicationController的

protected

def after_sign_in_path_for(resource)
  if resource.is_a?(User)
    stored_location_for(:user) || dashboard_home_path
  elsif resource.is_a?(AdminUser)
    stored_location_for(:admin_user) || admin_root_path(resource)
  end
end
Run Code Online (Sandbox Code Playgroud)

devise ruby-on-rails-3 activeadmin

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

从javascript触发cocoon add_association

我正在使用cocoon,我想在选择日期选择器中的日期(可以是多个日期)时自动添加子记录.

我可以像这样在coffeescript中捕获日期选择,但我不知道如何通过cocoon添加子记录,即通过模拟link_to_add_association被触发时发生的事情.

$(".form_multidate").datepicker().on 'changeDate', (e) -> alert(e.dates)
Run Code Online (Sandbox Code Playgroud)

cocoon设置是一个标准的嵌套形式,没有技巧,在页面上正常工作.

编辑:评论重新绑定日历中提到的代码:

$(document).ready(function() {
  $('#other_request_details')
    .bind('cocoon:after-insert', function() {
      return $('.datepicker-single').datepicker({
        dateFormat: "DD, dd M yy"
      });
    });
});    
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails coffeescript ruby-on-rails-4 cocoon-gem

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