小编Mys*_*elf的帖子

填充基本视图模型的最佳方法

我知道有两种方法可以填充基础模型视图:

第一种方法,使用OnActionExecuted方法:

public abstract class BaseController : Controller
{
    protected override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        base.OnActionExecuted(filterContext);

        var result = filterContext.Result as ViewResultBase;
        if (result != null)
        {
            var model = filterContext.Controller.ViewData.Model as BaseViewModel;

            if (model != null)
            {
                model.CurrentUser = HttpContext.Current.Request.Cookies["CurrentUser"].Value;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

第二种方式,属性获取访问者:

public abstract class BaseViewModel
{
    public string CurrentUser
    {
        get
        {
            return HttpContext.Current.Request.Cookies["CurrentUser"].Value;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

哪种方式更好?我缺少任何利弊?

model-view-controller design-patterns viewmodel asp.net-mvc-3

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

rake db:用mysql2 gem创建错误(无法为{"adapter"=>"mysql2"创建数据库)

我正试图在我的debian 7盒子上使用ruby 2.0和rails 4一起运行,并且我在使用mysql2 gem连接到mysql数据库时遇到问题.

我使用下面的命令来设置周围的一切:

\curl -L https://get.rvm.io | bash -s stable
rvm install ruby   
rvm use ruby --default
rvm rubygems current 
gem install rails --no-ri --no-rdoc

当我尝试运行rake db:create时,我收到了以下错误:


no implicit conversion of Fixnum into String
/home/mayrun/.rvm/gems/ruby-2.0.0-p247/gems/mysql2-0.3.13/lib/mysql2/client.rb:58:in `connect'
/home/mayrun/.rvm/gems/ruby-2.0.0-p247/gems/mysql2-0.3.13/lib/mysql2/client.rb:58:in `initialize'
/home/mayrun/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/connection_adapters/mysql2_adapter.rb:18:in `new'
/home/mayrun/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/connection_adapters/mysql2_adapter.rb:18:in `mysql2_connection'
/home/mayrun/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:440:in `new_connection'
/home/mayrun/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:450:in `checkout_new_connection'
/home/mayrun/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:421:in `acquire_connection'
/home/mayrun/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:356:in `block in checkout'
/home/mayrun/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
/home/mayrun/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:355:in `checkout'
/home/mayrun/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:265:in `block in connection'
/home/mayrun/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
/home/mayrun/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:264:in `connection'
/home/mayrun/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:546:in `retrieve_connection'
/home/mayrun/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/connection_handling.rb:79:in `retrieve_connection'
/home/mayrun/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/connection_handling.rb:53:in `connection'
/home/mayrun/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/tasks/mysql_database_tasks.rb:8:in `connection'
/home/mayrun/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/tasks/mysql_database_tasks.rb:16:in `create'
/home/mayrun/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/tasks/database_tasks.rb:72:in `create'
/home/mayrun/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0/lib/active_record/tasks/database_tasks.rb:86:in …
Run Code Online (Sandbox Code Playgroud)

ruby mysql gem ruby-on-rails mysql2

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