fullstack-course 8/10

感悟

  • 追求做出完美的东西其实是一件不可能的事情。你觉得完美的东西其实可能就是高你N个level的作者眼中不完美的产品。所以,重点不是做出现阶段你觉得完美的东西(当然这本身也是不可能的),而是去向更好的层次攀登,品味高了,质量自然就高了。
  • 看了得到上面万维钢的一篇文章《失败不是成功之母,成功是成功之母》里面讲到两个观点觉得不错。
    ①“我的失败不是我的成功之母,但是别人的失败则可能是我的成功之母”(要注意,这里对失败的定义指的是大失败,会给人造成较大打击的失败,如项目失败、公司倒闭等。而不是训练过程中遇到的强反馈的小错误。)给我们的启示是,我们可以去看别人的失败,去体会那些错误,然后促成自己成长。最简单的方式就是去看同学写code遇到的错误,然后试着用自己的思路去解决那个问题。
    ②“'好的失败',应该满足三个条件: 第一是及时。一旦不对马上就有人给你指出来。 第二是对事不对人。你错了,下次改正过来就是,没有必要上升到‘你这个人行不行’的层面。 第三是错误的代价很小” 看到这三个条件,我的第一反应就是,卧槽,这不就是code当中遇到的bug的特点么?!反馈及时、对事不对人、错误代价极小。真是“好的失败”。
  • 做事要快,心态要慢。

growthhack

今天老师讲了growthhack的知识,着重在怎么用技术手段和技术思想来促进营销增长,是一个很好的概念。growthhack的核心是做好产品,增加用户购买信心,打消用户购买疑虑。基于核心思想有很多方法手段来辅助达成目的。最重要的是先对自己企业进行“监视”,知道自己的具体现实状况。在表现上最重要的则是掌握landing page的结构。具体怎么作品landing page老师下周一会教,期待自己也能一个小时写出一个landing page。
ps:growthhack更详细的知识可以参考老师的书籍和今天同学录制的视频。

技术知识

  • 在建立“我的订单”时学到的两个知识:
    ①双层循环关系
    <% @order.each do |order| %>
    <% order.product_lists.each do |product_list| %>
    
    
    

    <% end %>
    <% end %>



    这行代码的意思就是在捞出order数据的循环里在嵌套一个捞出product数据的循环。
    之所以可以这么做,是因为order这个model有和product_list这个model建立联系(即order has_many :product_lists/product_list belongs_to order),所以可以在循环里嵌套。
    用order.product_lists(复数)是因为表单名称是复数。
    这样做的好处就是我可以在一个views里面同时捞出product_list和order的所有数据为我所用。关键点就是两个model必须建立联系。
    ②循环的另一种写法
    index.html.erb里面有一段这样的代码:
    <%= render :partial => "orderlist", :collection => @orders, :as => :order %>
    

    :collection => @orders, :as => :order 表示读取controller传来的@orders的集合,并在其中取到每个order的数据。其实就是等于循环的意思。
    所以这里循环了之后,在_orderlist.html.erb就不用再套<% @orders.each do |order| %>这个循环了,否则显示的内容会重复(总之就是会错)。
    二者选其一,当然,以第一种方法较为简便。

    • 制作支付宝支付(或微信支付)“假支付”的思路:
      ①添加一个is_paid的栏位,default为false。即默认状态为未支付。
      ②在controller里面实作一个动作(def的名称与routes里post的method名称对应),当点击支付时,is_paid赋值(“=”)为true。意思是点击按钮,则is_paid为true。
      ③在view里面对应设置当is_paid 的值为true时(这里要用“==”),则标签显示“已付款”,否则(即“false”时)显示“未付款”。因为默认情况是false,所以订单刚建立为点击按钮就会显示“未付款”。
      ④同样,在view里面设置如果is_paid的值是false(“==”),则显示付款的按钮,否则(即“true”时),不显示按钮。 view里的具体代码如下:
      略
      <span class="pull-right">
        <% if @order.is_paid == true %>
        <label class="label label-success">已付款</label>
        <% else %>
        <label class="label label-warning">未付款</label>
        <% end %>
      </span>
      略
      
      
      

      <% if @order.is_paid == false %>
      <div class="group pull-right">
      <%= link_to("支付宝支付",pay_with_alipay_order_path(@order),:method => :post,class:"btn btn-danger btn-lg ") %>
      <%= link_to("微信支付",pay_with_wechat_order_path(@order), :method => :post ,class:"btn btn-danger btn-lg ") %>
      </div>
      <% end %>


      • html里面的用class="",如果是引用,比如引用bootstrap里面的按钮或者link_to里面,则要用class:""

      • rails c 删除全部资料的命令:XXX.delete_all 例如:Group.delete_all

      • 小计的写法:<%= product_list.price * product_list.quantity %> rails里面可以直接用*

      • 关于.gitignore隐藏的文件如何不显示和一个世纪大坑
        如何不显示:可以在tree-view里面设置Hide VCS Ignored Files让加在.gitignore里的隐藏文件不显示
        世纪大坑:tree-view里面的Hide VCS Files不勾选的话,在默认的Atom Dark Themes里面隐藏文件显示的是灰色字,而在Spacegray Themes里面却和其他公开文件的显示没有差别,是看不出来的!!一个让人欲哭无泪的坑。