小编con*_*tor的帖子

RoR嵌套属性在编辑时会生成重复项

我正在尝试关注Ryan Bates RailsCast#196:嵌套模型表单第1部分.Ryans版本有两个明显的区别:1)我正在使用内置脚手架而不是他正在使用的漂亮,2)我正在运行rails 4(我真的不知道Ryans在他的演员阵容中使用的是什么版本,但它不是4).

所以这就是我做的

rails new survey2
cd survey2
bundle install
rails generate scaffold survey name:string
rake db:migrate
rails generate model question survey_id:integer content:text
rake db:migrate
Run Code Online (Sandbox Code Playgroud)

然后我将关联添加到模型中

class Question < ActiveRecord::Base
  belongs_to :survey
end
Run Code Online (Sandbox Code Playgroud)

所以

class Survey < ActiveRecord::Base
  has_many :questions
  accepts_nested_attributes_for :questions
end
Run Code Online (Sandbox Code Playgroud)

然后我添加了嵌套视图部分

<%= form_for(@survey) do |f| %>
  <!-- Standard rails 4 view stuff -->

  <div class="field">
    <%= f.label :name %><br>
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.fields_for :questions do |builder| %>
      <div>
        <%= …
Run Code Online (Sandbox Code Playgroud)

duplicates nested-attributes ruby-on-rails-4

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

如何为编辑操作指定devise_parameter_sanitizer?

我已将Devise添加到我的Rails 4应用程序中,并成功将用户名等添加到我的用户模型中.此外,我能够使用lazy way™存储这些字段,即

class ApplicationController < ActionController::Base
  before_filter :configure_permitted_parameters, if: :devise_controller?

  protected

    def configure_permitted_parameters
      devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:email, :password, :password_confirmation, :firstname, :middlename, :lastname) } 
    end
end
Run Code Online (Sandbox Code Playgroud)

但是,我试过了

def configure_permitted_parameters
  devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:email, :password, :password_confirmation, :firstname, :middlename, :lastname) }
  devise_parameter_sanitizer.for(:edit) { |u| u.permit(:email, :password, :password_confirmation, :firstname, :middlename, :lastname) }
end
Run Code Online (Sandbox Code Playgroud)

但是这并没有像预期的那样工作(编辑动作调用时没有存储用户名).为了让它发挥作用,我还需要做些什么吗?谢谢!

devise strong-parameters ruby-on-rails-4

50
推荐指数
4
解决办法
3万
查看次数

Delphi 2010:TRTTIConstructor发生了什么?

我有两个问题(其中至少有一个是关于D2010中的RTTI和动态实例)

  1. 我正在阅读巴里凯利(Barry Kelly)的会议演讲中看起来像是箔片,并在第二页上找到了.13看起来非常有趣的东西:TRTTIConstructor.Invoke.在相邻的项目符号点中,可以找到"动态构造实例而无需虚拟构造函数和元类".这似乎是一个很棒的功能(正是我需要的,顺便说一下)!但是,当我查看D2010文档(ms-help://embarcadero.rs2010/vcl/Rtti.html)时,我找不到它.它被撤销了吗?
  2. 如果类名存储在字符串中,创建类实例的最小方法是什么?

delphi rtti delphi-2010

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

为什么TValue.Make需要指向对象引用的指针?

我一直在Delphi的对象实际上引用的内存位置,这反过来我想象存储为指针变量的印象.

现在,我想从一个物体制作一个TValue.考虑一下:

TValue.Make(AObject, TypeInfo(TMyObject), val);
Run Code Online (Sandbox Code Playgroud)

哪里val: TValue.这不行.实际上,后续使用val会导致访问冲突.但是,如果我们使用address-of运算符,如下所示:

TValue.Make(@AObject, TypeInfo(TMyObject), val);
Run Code Online (Sandbox Code Playgroud)

一切都很好.对我来说,这是出乎意料的,因为我认为AObject(引擎盖下)实际上是一个指针.我错了,或者这是TValue.Make方法的怪癖?有人可以赐教吗?

delphi pointers object

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

如何在没有实例化的情况下确保RTTI可用于某个类?

我最近在这个论坛上发布了一个问题,询问有关DXE2可执行文件中缺少RTTI信息的任何建议.

那篇文章是我实际案例的精简版.RRUZ来救援,因此被剥离的版本很快得到了解决.但是,最初的问题仍然存在,所以我现在正在全力发布."主要":

program MissingRTTI;
{$APPTYPE CONSOLE}
uses
  System.SysUtils, RTTI, MyUnit in 'MyUnit.pas', RTTIUtil in 'RTTIUtil.pas';
var
  RHelp:  TRttiHelper;
begin
  RHelp := TRttiHelper.Create();
  if (RHelp.IsTypeFound('MyUnit.TMyClass')) then WriteLn('TMyClass was found.')
  else WriteLn('TMyClass was not found.');
  ReadLn;
  RHelp.Free();
end.
Run Code Online (Sandbox Code Playgroud)

RTTIUtil.pas:

unit RTTIUtil;
interface
uses
  MyUnit;
type
  TRttiHelper = class(TObject)
  public
    function IsTypeFound(TypeName: string) : boolean;
  end;
implementation
uses
  RTTI;
function TRttiHelper.IsTypeFound(TypeName: string): boolean;
var
  rCtx:   TRttiContext;
  rType:  TRttiType;
begin
  Result := false;
  rCtx := TRttiContext.Create();
  rType := rCtx.FindType(TypeName);
  if (rType …
Run Code Online (Sandbox Code Playgroud)

delphi rtti delphi-xe2

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

Delphi:SetLength()关于类型"TObject数组"的参数

我正在尝试调整作为参数传递的某个类的数组,例如

procedure Resize(MyArray: Array of TObject);
begin
  SetLength(MyArray, 100);
end;
Run Code Online (Sandbox Code Playgroud)

但是,这会引发错误"E2008不兼容类型".是不是你不能这样做(我看过谣言,但没有官方文件)或者我做错了什么?

arrays delphi resize object

6
推荐指数
2
解决办法
4068
查看次数

Delphi:确定通用的实际类型?

有没有办法确定作为方法参数传递的变量的类型?考虑班级:

TSomeClass = class
  procedure AddToList<T: TDataType; U: TListClass<T>>(Element: T; List: U);
end;
Run Code Online (Sandbox Code Playgroud)

与方法实现

procedure TSomeClass.AddToList<T, U>(Element: T; List: U);
begin
  if Element is TInt then
    List.AddElement(TInt.Create(XXX))
  else if Element is TString then
    List.AddElement(TString.Create(YYY));
end;
Run Code Online (Sandbox Code Playgroud)

其中TInt.Create()和TString.Create()具有不同的参数集,但它们都继承自TDataType.

现在,我知道 - is操作员不能像这样使用,但是有没有合法的替代方案来做我在这里要求的事情?

delphi generics

6
推荐指数
1
解决办法
5682
查看次数

Delphi:为什么抱怨缺少方法实现?

我想使用IEnumerator<T>而不是IEnumerator我正在建立的列表.我尝试了以下内容

IMyList = interface(IEnumerator<TElement>)
  procedure Add(Element: TElement);
end;

TMyList = class(TInterfacedObject, IMyList )
private
  function GetCurrent: TElement;
  function MoveNext: Boolean;
  procedure Reset;
public
  property Current: TElement read GetCurrent;
  procedure Add(Element: TElement);
end;
Run Code Online (Sandbox Code Playgroud)

但令我惊讶的是,我被告知TMyList没有实施GetCurrent.为什么编译器告诉我GetCurrent当它显然没有时会丢失?(为了记录,GetCurrent已实现,为简洁起见,此处仅省略.)谢谢!

delphi generics interface delphi-xe2

6
推荐指数
1
解决办法
976
查看次数

Delphi:无效的XML通过MSXML验证

我试图在MSDN上重新编写一个JScript示例,以便针对某些模式验证XML.

作为第一个attmempt,我使用了示例中使用的sl-valid.xml,sl-notValid.xml和sl.xsd文件.

我的代码如下:

procedure BasicValidation(FileName: string);
var
  XML: IXMLDOMDocument2;
begin
  // Load XML and resolve externals
  XML := ComsDOMDocument.Create;
  XML.async := False;
  XML.validateOnParse := True;
  XML.resolveExternals := True;
  XML.setProperty('SelectionLanguage', 'XPath');
  XML.setProperty('SelectionNamespaces', 'xmlns:x=''urn:book''');
  XML.load(FileName);
  if XML.parseError.errorCode <> 0 then
    ShowMessage('Error parsing. Reason: ' + XML.parseError.reason)
  else
    ShowMessage('XML validation OK.');
end;
Run Code Online (Sandbox Code Playgroud)

当我尝试sl-notValid.xml文件时,我仍然可以获得'XML验证'.有没有人见过这个?上述代码与JScript考试之间的根本区别是什么?http://msdn.microsoft.com/en-us/library/ms764717%28VS.85%29.aspx

xml delphi msxml

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

Delphi:为什么FreeAndNil*真的没有我的对象?

我想将对象A传递给第二个对象B,让B做一些处理,最后释放A以防不再需要它.下面给出了一个淡化版本.

program Project6;
{$APPTYPE CONSOLE}
uses
  SysUtils;
type
  TMyObject = class(TObject)
  public
    FField1:  string;
    FField2:  string;
  end;
  TBigObject = class(TObject)
  public
    FMyObject:  TMyObject;
    procedure Bind(var MyObject:  TMyObject);
    procedure Free();
  end;
procedure TBigObject.Bind(var MyObject: TMyObject);
begin
  FMyObject := MyObject;
end;
procedure TBigObject.Free;
begin
  FreeAndNil(FMyObject);
  Destroy();
end;
var
  MyObject:   TMyObject;
  BigObject:  TBigObject;
begin
  try
    MyObject := TMyObject.Create();
    BigObject := TBigObject.Create();
    BigObject.Bind(MyObject);
    BigObject.Free();
    if (Assigned(MyObject)) then begin
      WriteLn('Set MyObject free!');
      MyObject.Free();
    end;
    ReadLn;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end; …
Run Code Online (Sandbox Code Playgroud)

delphi memory-management

5
推荐指数
3
解决办法
1277
查看次数