小编Sam*_*amo的帖子

从端点返回JObject作为Json

我想做这样的事情:

var taxonomyJson = JObject.FromObject(taxonomy);
return Json(taxonomyJson, JsonRequestBehavior.AllowGet);
Run Code Online (Sandbox Code Playgroud)

我已经尝试过转换taxonomyJsonJToken各种其他属性.我试过包装等等但它总是会引发错误.

当然,我可以返回taxonomyJson.ToString(),但我不太喜欢它,因为它在我的字符串周围包含一个额外的双重配额,我的JavaScript必须在调用之前将其剥离JSON.parse().

如果Json()能够处理序列化对象,为什么不能处理JObjectJToken具有JSON已经做好准备?

c# asp.net-mvc json json.net

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

迭代ActiveRecord对象的属性

我正在尝试迭代ActiveRecord对象的属性.我一直在网上搜索,但我一直空白.我以为我对object.to_enum感到很热情,但是尽管这会返回一个Enumerator对象,但我仍然得到错误,说我的对象没有定义'each'.

调用object.methods给了我一堆我不想要的继承的东西.调用object.instance_variables并没有给我任何接近我所寻求的东西.我猜这不难,但我还没想到它:)有人可以帮忙吗?谢谢!

ruby-on-rails

3
推荐指数
1
解决办法
4476
查看次数

从控制器测试的上下文中访问ModelAndView对象中包含的模型的属性

我是Spring MVC的新手,我正在学习如何测试我的控制器.我有一个简单的测试:

@Test
public void shouldDoStuff()
{
    request.setRequestURI("/myCompany/123");
    ModelAndView mav = controller.getSomeDatas("123", request);
    assertEquals(mav.getViewName(), "company");
    assertTrue(mav.getModel().containsKey("companyInfo"));
    assertTrue(mav.getModel().containsKey("rightNow"));
    assertEquals(mav.getModel().get("companyInfo"), "123");
}
Run Code Online (Sandbox Code Playgroud)

这是我的控制器动作:

@RequestMapping(value = "/myCompany/{companyGuid}", method = RequestMethod.GET)
public ModelAndView getSomeDatas(@PathVariable("companyGuid") String myGuid, HttpServletRequest request)
{
    /*ModelAndView mav = new ModelAndView("company");
    mav.addObject("companyInfo", myGuid);
    mav.addObject("rightNow", (new Date()).toString());
    return mav;*/
    Map<String, Object> myModel = new HashMap<String, Object>();

    myModel.put("companyInfo", myGuid);
    myModel.put("rightNow", (new Date()).toString());

    return new ModelAndView("company", "model", myModel);
}
Run Code Online (Sandbox Code Playgroud)

我在第一个断言上设置了断点.在Eclipse的Display窗口中,mav.getModel()完全返回我期望的内容:

mav.getModel()
 (org.springframework.ui.ModelMap) {model={rightNow=Fri Nov 05 13:30:57 CDT 2010, companyInfo=123}}
Run Code Online (Sandbox Code Playgroud)

但是,任何访问该模型中的值的尝试都会失败.例如,我假设以下内容可行:

mav.getModel().get("companyInfo")
 null
mav.getModel().containsKey("companyInfo")
 (boolean) …
Run Code Online (Sandbox Code Playgroud)

java junit spring-mvc

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

我可以从ActionResult中检索ViewModel吗?

试图避免在这里重复.我在基类控制器中有一个动作,我不允许修改.我希望我的动作做一些检查,调用基类操作,并在渲染之前以某种方式修改结果.但我需要做的部分工作包括修改一些属性,ViewModel基类返回一个ActionResult.我看不出有什么办法让ViewModelActionResult,所以我可能会写一个自定义的方法,其中大部分只会模仿什么的基类是做.我强烈不愿意这样做.有什么建议?

c# asp.net-mvc actionresult viewmodel

3
推荐指数
1
解决办法
4853
查看次数

如何从集成测试将文件上传到端点

当客户端上传文件时,可以在 中找到该文件this.Request.Files,其类型为HttpFileCollectionBase

HttpFileCollectionBase包含HttpPostedFileBase条目。

这些对象的属性是只读的,所以我希望我可以设置一些模拟。我的模拟请求将返回一个模拟HttpFileCollection,并且该集合将包含一个模拟HttpPostedFile。该对象的属性InputStream将返回一个FileStream对象,我将使用源代码管理中的真实文件实例化该对象。

  1. 这是从集成测试将文件上传到端点的好方法吗?
  2. 如果这是一个好方法,我该如何模拟它Moq
  3. 如果这不是一个好方法,您能建议更好的方法吗?

谢谢!

c# asp.net-mvc integration-testing file-upload moq

3
推荐指数
1
解决办法
1769
查看次数

如何在 Rails 5 API 模式下启用 CSRF

我有一个通过 http-only cookie 进行身份验证的 Rails API,因此我需要 CSRF 保护。据我所知,Rails 社区似乎更喜欢将 jwt auth 令牌存储在本地存储而不是 cookie 中。这避免了对 CSRF 的需要,但会将您暴露给 XSS,这就是我们选择使用 cookie + csrf 的原因。

由于社区对本地存储的偏好,似乎默认禁用 CSRF 保护。我试图以有限的成功启用它。这是我尝试处理它的方式:

module V1
  class ApplicationController < ::ApplicationController
    include Concerns::Authentication
    include ActionController::RequestForgeryProtection
    protect_from_forgery

    protected

    def handle_unverified_request
      raise 'Invalid CSRF token'
    end

    after_action :set_csrf_cookie

    def set_csrf_cookie
      if current_user 
        cookies['X-CSRF-Token'] = form_authenticity_token
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

在客户端,我可以看到令牌返回到 cookie 中。当我发出请求时,我还看到X-CSRF-Token标头中存在令牌。到目前为止一切看起来都很好。

但是,该verified_request?方法返回 false,因此handle_unverified_request被调用。单步执行 Rails 代码,我看到我的令牌存在于 中request.x_csrf_token,但在对照session. 我在这里想知道的一件事是我是否需要启用某些东西才能session正常工作,因为我知道会话管理在 API 模式下没有打开是默认的。但是,如果是这样的话,我有点期望访问session …

api cookies session csrf ruby-on-rails-5

3
推荐指数
1
解决办法
2256
查看次数

Resolve <T>()是否按会话返回对象?

在Microsoft Unity IoC中,如果我调用Resolve<SomeType>(),我可以保证返回的对象是在当前会话期间创建的对象吗?

例如,三个用户登录,并且假设SomeType在容器中创建的对象具有针对每个用户的不同值.是否会调用Resolve返回为当前用户创建的对象?或者它会做一些愚蠢的事情,比如返回创建的最后一个?

由于一些环境问题,我自己也遇到了麻烦,我需要尽快检查一下,所以如果有人能回答这个问题,那将非常有帮助!

编辑

请原谅我,我是Unity的新手,但根据我在这里阅读的内容,似乎我应该能够在容器中注册具有唯一名称的对象,并通过该名称检索它们.那么,我不能使用会话ID或会话中持续存在的其他值来检索我的对象吗?

c# asp.net-mvc ioc-container unity-container

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

您可以使用Groovy代码在Grails迁移中创建和修改数据吗?

目标 - 在单个部署/重启中,我想创建一个新表并填充一些记录,因为会有代码更改,期望这些数据存在.

理想 - 编写实现此目的的迁移.想象一下,我已经创建了我的Foo类,生成了一个用于创建foograils dbm-gorm-diff ....的迁移,并使用它来运行迁移grails dbm-update.我现在有我的域类和我的数据库表.凉.

现在我将编写一个填充表的新迁移.

databaseChangeLog = {
    changeSet(author: "samslotsky", id: "PopulateFooTable") {
        grailsChange {
            change {
                new Foo(bar: 'baz').save()
                new Foo(bar: 'blitz').save()
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我将把它添加到changelog.groovy

include file: 'populate-foo-table.groovy'
Run Code Online (Sandbox Code Playgroud)

grails dbm-update再次运行后,我的foo表中没有记录.这不是验证问题,因为我可以Foo从应用程序代码中创建对象.我甚至不确定如何判断我的迁移是否已执行,因为断点似乎没有在迁移中捕获.

所以我想有两个好问题要问:

  1. 除了寻找副作用(即我的db表被填充),我怎么能确定我的迁移甚至已经执行了?
  2. 如何从迁移中创建新记录?我可以使用Groovy代码,还是我坚持编写SQL?

我意识到我可以先创建表和域类,部署它,创建导入工具或管理界面来播种数据,然后修改代码以使用数据.我真的不想完成所有这些.我应该能够通过单一部署无缝地完成此任务,就像我在Rails中一样.

谢谢!

migration grails seeding grails-2.0

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

fields_for has_many未在表单上显示为数组

通常当我使用一个fields_for简单的has_many关联时,表单上的输入名称看起来像foo[bars_attributes][0][name],但在我的情况下,它没有显示为表单上的数组 - 而是我得到类似的东西foo[bars][name],当我尝试时会爆炸提交,因为它试图分配给数组的名称属性 - 我无法弄清楚与其他情况有什么不同.这是代码,显然已经简化并重命名为此场地.

我的模特:

  class Foo
    has_many :bars
  end
Run Code Online (Sandbox Code Playgroud)

控制器:

  class FooController < ApplicationController
    def new
      @foo = Foo.new
      @foo.bars.build
      @foo
    end
  end
Run Code Online (Sandbox Code Playgroud)

风景:

<div>
  <%= form_for @foo do |f| %>
    <%= f.fields_for :bars do |bar_fields| %>
      <%= bar_fields.text_field :name %>
    <% end %>
    <div class="single_column">
      <%= f.submit "Submit" %>
    </div>
  <% end %>
</div>
Run Code Online (Sandbox Code Playgroud)

结果标记:

<input name="foo[bars][name]" id="foo_bars_name" />
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails has-many fields-for ruby-on-rails-4

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

从异步回调更新Ionic视图

我在我的Ionic应用程序中使用phonegap-estimotebeacons插件来定位一些信标.当它获得更新的信标信息时,我希望它更新视图,但我的列表不会更新,直到我切换到另一个选项卡然后切换回来.

这是我的视图,列出了所有找到的信标:

<ion-view view-title="Beacons">
  <ion-content>
    <ion-list>
      <ion-item ng-repeat="beacon in beacons" type="item-text-wrap">
        <span>{{beacon.macAddress}}</span>
        <span>{{beacon.distance}}</span>
      </ion-item>
    </ion-list>
  </ion-content>
</ion-view>
Run Code Online (Sandbox Code Playgroud)

这是呈现视图的控制器:

.controller('BeaconsCtrl', function($scope, Beacons) {
  $scope.beacons = [];
  Beacons.range($scope);
})
Run Code Online (Sandbox Code Playgroud)

然后Beacons工厂开始对信标进行测距,并在每次成功回调时更新范围:

.factory('Beacons', function() {
  rangeBeacons = function($scope) {
    var success = function(beaconInfo) {
      $scope.beacons = beaconInfo.beacons;
    };

    var failure = function(errorMessage) {
      alert(errorMessage);
    };

    EstimoteBeacons.startRangingBeaconsInRegion(
      {},
      success,
      failure
    );
  };

  return {
    range: rangeBeacons
  };
})
Run Code Online (Sandbox Code Playgroud)

从我看过的其他例子来看,看起来我的视图应该在我更新$scope对象时做出反应,但是我必须转到另一个选项卡然后返回以便我的视图更新.如果$scope修改变量,我该怎么做才能让视图更新?

更新

修改了控制器代码以显示我已尝试初始化$scope.beacons为空数组,但这没有区别.

android cordova angularjs-scope estimote ionic-framework

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

在实体框架中干净地更新层次结构

我正在提交一份表格StoredProcedureReport,其中有很多StoredProcedureParameters.创建工作正常,但尝试更新让我不知道微软是否会认真对待.

我来自一个Rails背景,@report.update_attributes(params[:report])它将确切知道如何处理它在其中找到的任何关联数据.据我所知,这相当于.NET TryUpdateModel,看起来很有希望.首先.所以我尝试了这样的一些参数

IDGUID:d70008a5-a1a3-03d2-7baa-e39c5044ad41
StoredProcedureName:GetUsers
Name:search again UPDATED
StoredProcedureReportParameters[0].IDGUID:d70008a5-aba3-7560-a6ef-30a5524fac72
StoredProcedureReportParameters[0].StoredProcedureReportID:d70008a5-a1a3-03d2-7baa-e39c5044ad41
StoredProcedureReportParameters[0].Name:RowsPerPage
StoredProcedureReportParameters[0].Label:rows
StoredProcedureReportParameters[0].StoredProcedureReportParameterDataTypeID:a50008a5-2755-54c0-b052-865abf459f7f
StoredProcedureReportParameters[0].StoredProcedureReportParameterInputTypeID:a50008a5-2955-a593-d00f-00cd4543babf
StoredProcedureReportParameters[0].DefaultValue:10
StoredProcedureReportParameters[0].AllowMultiple:false
StoredProcedureReportParameters[0].Hidden:false
StoredProcedureReportParameters[1].IDGUID:d70008a5-a7a3-e35e-28b6-36dd9e448ee5
StoredProcedureReportParameters[1].StoredProcedureReportID:d70008a5-a1a3-03d2-7baa-e39c5044ad41
StoredProcedureReportParameters[1].Name:PageNumber
StoredProcedureReportParameters[1].Label:page was MODIFIEIIEIEIED!!!
StoredProcedureReportParameters[1].StoredProcedureReportParameterDataTypeID:a50008a5-2755-54c0-b052-865abf459f7f
StoredProcedureReportParameters[1].StoredProcedureReportParameterInputTypeID:a50008a5-2955-a593-d00f-00cd4543babf
StoredProcedureReportParameters[1].DefaultValue:1
StoredProcedureReportParameters[1].AllowMultiple:false
StoredProcedureReportParameters[1].Hidden:false
Run Code Online (Sandbox Code Playgroud)

我假设在设置了所有主键和外键时,EF会知道StoredProcedureReportParameter在执行此操作时如何更新对象:

var report = context.StoredProcedureReports.FirstOrDefault(r => r.IDGUID == reportID);

if (report != null)
{
    succeeded = TryUpdateModel(report);
    context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我放置一个断点context.SaveChanges(),我的report对象及其相关的StoredProcedureReportParameters外观就像我期望的那样.设置外键和主键,检查所有值.但SaveChanges引发了这个错误:

操作失败:无法更改关系,因为一个或多个外键属性不可为空.当对关系进行更改时,相关的外键属性将设置为空值.如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象.

一个在此消息的建议是,我应该指定外键属性非空值,但正如我所说,StoredProcedureReportID 两个正确的值StoredProcedureReportParameter对象.

我读过的其他帖子涉及Update操作循环关联并将它们附加到上下文.这真的是我坚持做的吗?EF真的那么密集吗?我希望.NET专业人员能够向我展示这一点.有比这更简单的方法.

asp.net-mvc entity-framework crud updates

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

ThinkingSphinx在RSpec中不起作用

我读过帖子说这是由于交易固定装置,但看起来我们没有使用它们.我已经阅读了其他帖子,建议我在每次测试运行之前做一些时髦的停止,重新启动和重新索引.这似乎没有帮助.

ThinkingSphinx在应用程序中运行得很好,但在测试中它表现得非常奇怪.Organization在我的规范中创建了几个模型后,我运行了一个sphinx搜索.它有两个我期待的记录,但也有很多.这很烦人,但是我添加了一个:retry_stale => true并且那些消失了,所以我对第一个查询感到满意:

(rdb:1) p Organization.search '', :retry_stale => true
[#<Organization id: 1, ein: nil, name: "Allina", created_at: "2012-09-11 15:03:04", updated_at: "2012-09-11 15:03:04", parent_id: nil, main_phone: "7867685187x894", fax: nil, email: nil, url: nil, crm_id: 1, target_market: false, notes: nil, form990_notes: nil, mec_revenue: 750000.0, legacy_id: nil, teaching_program_type_id: nil, sponsorship_type_id: nil, is_member_council_teaching_hospitals: nil, has_teaching_program: nil, is_major_academic_medical_center: nil, does_participate_in_survey: nil, status: "modified", net_revenue: nil, gross_revenue: nil, source_name: nil, source_id: nil, import_concat_key: nil, bigtime_id: nil, is_non_hc: nil, is_client: …
Run Code Online (Sandbox Code Playgroud)

ruby rspec thinking-sphinx ruby-on-rails-3

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