>  Q&A  >  본문

ruby-on-rails - ruby on rails中出现symbol使用的问题 急求大神解答

  class Books < ActiveRecord::Migration
  def self.up
     create_table :books do |t|
    t.column :title, :string, :limit => 32, :null => false
    t.column :price, :float
    t.column :subject_id, :integer
    t.column :description, :text
    t.column :created_at, :timestamp
     end
  end

  def self.down
    drop_table :books
  end
end

在上面rails迁移代码中:books是用符号代表参数吗? :title :price :string这些都是要干什么捏? 我知道ruby中的符号是用来替代字符串节省内存空间 可是这个情形下依然不知道是什么意思啊 求大神解答

<p class="row collapse">
  <p class="small-3 columns">
    <%= f.label :name, class: "right inline" %>
  </p>
  <p class="small-9 columns"><%= f.text_field :name %></p>
</p>
<p class="row collapse">
  <p class="small-3 columns">
    <%= f.label :price, class: "right inline", title: "Price in USD", data: {tooltip: true} %>
  </p>
  <p class="small-9 columns"><%= f.text_field :price %></p>
</p>
<p class="row collapse">
  <p class="small-9 small-offset-3 columns"><%= f.submit %></p>
</p>

还有在erb中也出现了ruby符号的奇怪用法 f.label :price 是要用:price 去代替f.label吗? 急求大神解答 纠结了几天了

高洛峰高洛峰2712일 전577

모든 응답(1)나는 대답할 것이다

  • 大家讲道理

    大家讲道理2017-04-21 11:18:35

    루비에서

    :xxx는 기호를 나타냅니다.

    기호 를 문자열 으로 이해할 수 있지만 정확히 동일하지는 않습니다.

    기호는 변경되지 않습니다.

    우선, Ruby의 모든 것은 객체이며, 각 객체는 메모리 내 물리적 위치를 나타내는 고유한 object_id를 갖습니다(그러나 이 객체에 직접 액세스할 수는 없습니다).

    그러나 정수와 같은 몇 가지 예외가 있습니다. 동일한 정수의 object_id가 동일한 것을 알 수 있습니다. 이는 Ruby의 리소스 절약 방식입니다.

    으아아아

    Ruby의 구현입니다. 기호는 상수와 동일합니다. 즉, 동일한 object_id를 사용합니다. 즉, 메모리에서의 위치가 동일합니다. (상수의 object_id는 상수의 값을 직접 반영하며, 처리 중에도 특별하게 취급됩니다.)

    위의 코드는 다음과 같습니다. Ruby에서 함수 호출에 대한 괄호는 생략할 수 있습니다. 예를 들어, f.label :price는 실제로 f.label( :price)입니다. 동시에 해시의 {}도 생략할 수 있습니다. xxx=>xxx,xxx=>xxx 또는 xxx:xxx,xxx:xxx입니다. xxx, ...}

    :가격은 매개변수 중 하나일 뿐입니다.

    그래서 등장했습니다

    으아아아

    다음과 같이 코드를 작성하세요. 그가 의미하는 바는

    으아아아

    이런 방식으로 그는 형식 f에 라벨을 생성합니다. 이름은 name이고 html 태그의 클래스는 "right inline"입니다.

    으아아아

    do|x|...end에는 특별한 의미가 없습니다. {|x|}처럼 블록을 나타낼 뿐입니다. 이 코드에는 반복이 있으며 실제로는 다음과 유사합니다.

    으아아아

    물론 이것도 합법적입니다.

    으아아아

    그러면 괄호를 생략할 수 있어서 위와 같이 됩니다.

    Ruby에서 이러한 기능을 구현하려면 다음이 필요합니다.

    으아아아

    반복자의 더 구체적인 사용법은 다음을 참조하세요: http://blog.csdn.net/classwang/article/details/4692856

    회신하다
    0
  • 취소회신하다