小编mri*_*ula的帖子

为什么我们使用ViewModels?

我最近开始作为Web开发人员工作.我使用ASP .NET MVC 4和NHibernate.

在我的工作场所,我们严格使用视图模型在控制器和视图之间来回传输数据.并且视图模型不应包含模型的任何对象.我知道它是控制器和视图之间的一种层.

但是我发现编写一个viewmodel类是重复和冗余的,即使我们可以直接将模型的对象发送到视图(在大多数情况下).

例如,如果我想显示订单,我可以在控制器的操作中执行此操作 -

return View(Repository.Get<Order>(id));
Run Code Online (Sandbox Code Playgroud)

但相反,我必须编写一个viewmodel,用获取的顺序填充它,然后将其传递给视图.

所以,我的问题是,当我们可以使用模型的对象时,编写视图模型的目的是什么?

asp.net-mvc

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

Ruby on Rails - params是方法还是哈希?

所以,我想了入门的Ruby on Rails的的部分指导这里.

我不明白本教程中的一行.引用它:

PARAMS方法是代表参数(或场)从表单来的在对象中.

我确实有一些以前的rails经验,我总是假设params是一个哈希.但在这里他们称之为method which is an object.

params一个method还是一个hash?另外,在ruby中,方法也是对象吗?

ruby ruby-on-rails

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

网站部署到IIS时图像未加载

网站中使用的图像存储在此处(在图像文件夹中) -

文档树

图像以这种方式引用 -

<img src="@Url.Content("/Images/greenDot.png")" style="margin-right: 10px;"/>
Run Code Online (Sandbox Code Playgroud)

当我在本地计算机上运行网站时,所有图像都可以正常加载.但是当我在IIS上部署并运行该网站时,没有任何图像被加载.

错误 -

Failed to load resource: the server responded with a status of 404 (Not found) http://54.234.60.214/Images/Logo_Innosolv.jpg
Failed to load resource: the server responded with a status of 404 (Not Found) http://54.234.60.214/Images/Icons/bid.png
Run Code Online (Sandbox Code Playgroud)

什么似乎是问题?我是将图像移动到其他文件夹还是更改我在视图中引用它们的方式?

iis-7 asp.net-mvc-4

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

Rails:用于多部分/表单数据的 ActionDispatch::Request.parameter_parsers

在我的 Rails API 中,我添加了一个初始化程序,它将把 JSON 输入的键从蛇形大小写更改为下划线分隔。就像这样:

ActionDispatch::Request.parameter_parsers[:json] = -> (raw_post) {
    data = ActiveSupport::JSON.decode(raw_post)
    data = {:_json => data} unless data.is_a?(Hash)

    data.deep_transform_keys!(&:underscore)
}
Run Code Online (Sandbox Code Playgroud)

现在,某些 API 将通过标头传递:content-type: multipart/form-data而不是application/json

我想对这样的 API 做同样的事情。即添加一个初始化程序来转换参数中键的大小写。

我尝试过ActionDispatch::Request.parameter_parsers[:form_data],但没有成功。

我怎样才能实现这个目标?

ruby-on-rails rails-api

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

在Spring Batch中从数据库中读取记录

我正在尝试使用循环从数据库中读取一些记录,然后对记录进行一些计算(更新名为total的字段).

但我是春季批次的新手所以请任何人都可以提供一些提示.

spring-batch spring-batch-admin

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

ActiveStorage - 获取模型中的变体 URL

我正在将我的 Rails 应用程序从使用 PaperClip 迁移到 ActiveStorage。

在我的一个模型中,我有以下方法(使用回形针):

class ECard < ActiveRecord
    def thumb_url
        self.attachment.url(:thumb)
    end
end
Run Code Online (Sandbox Code Playgroud)

在控制器中,我有:

def by_type
    @e_cards = ECard.where(type_id: params[:type_id]).as_json(:only => [:id, :name], :methods => [:thumb_url])
    respond_to do |format|
        format.json { render json: @e_cards }
    end   
end
Run Code Online (Sandbox Code Playgroud)

现在,我正在使用 ActiveStorage,如何从thumb_url方法中获取附件的缩略图 url ?

作品Rails.application.routes.url_helpers.rails_blob_path(attachment, only_path: true)

不起作用Rails.application.routes.url_helpers.rails_blob_path(attachment.variant(resize: '200x200'), only_path: true)这会引发错误:NoMethodError (undefined method 'signed_id' for #<ActiveStorage::Variant:0x00007fac1960eab0>)

我如何实现这一目标?

ruby-on-rails rails-activestorage

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

属性值nil

有人可以告诉我为什么会这样吗?

我使用Ruby on Rails创建了一个社交网站。这是我第一次使用RoR编程。

我有一个名为“ Friendship”的模型,其中包含一个属性“ blocked”,以指示该用户是否已阻止另一个用户。

当我在IRB中运行以下命令时-

friendship = u.friendships.where(:friend_id => 22).first
Run Code Online (Sandbox Code Playgroud)

IRB给我-

  Friendship Load (0.6ms)  SELECT `friendships`.* FROM `friendships` WHERE `friendships`.`user_id` = 17 AND `friendships`.`friend_id` = 22 LIMIT 1
=> #<Friendship id: 33, user_id: 17, friend_id: 22, created_at: "2012-04-07 10:29:49", updated_at: "2012-04-07 10:29:49", blocked: 1> 
Run Code Online (Sandbox Code Playgroud)

如您所见,“已阻止”属性的值为“ 1”。

但是当我运行以下命令时

1.9.2-p290 :030 > friendship.blocked    
=> nil 
Run Code Online (Sandbox Code Playgroud)

-它说,blocked的值是'nil'而不是'1'。为什么会这样呢?这可能是一个非常愚蠢的错误,但是我是RoR的新手,请帮助我!

最初我没有为'blocked'包括accessor方法。我尝试过,但仍给出了相同的结果。

class Friendship < ActiveRecord::Base
    belongs_to :friend, :class_name => "User"
    validates_uniqueness_of :friend_id , :scope => :user_id

    attr_accessor :blocked
    attr_accessible :blocked
end
Run Code Online (Sandbox Code Playgroud)

这是表的架构:

1.9.2-p290 …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails-3

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