문제

  <% form_tag(:action=>'update', :id=>@album.id) do %>

  Title: <%= text_field(:album, :title)  %><br>
  Artist: <%= text_field(:album, :artist)  %><br>
  Genre: <%= text_field(:album, :genre)  %><br>
  Release Date: <%= datetime_select(:album, :release_date, :start_year=>1960) %><br>

  <%= submit_tag("Update") %>

  <% end %>

위의 예에서 작동하는 예에서, 나는 form_tag에서 @album.id를 말해야했지만 Text_field에서는 다음과 같이 말해야했습니다. 나는 내 견해에서 이것들을 계속 혼동하고 @ 표시 또는 기호를 사용할지 전혀 모른다. 언제 사용 해야하는지 명확하게 할 수있는 간단한 규칙이 있습니까?

도움이 되었습니까?

해결책

나는 잠시 여기에 탄젠트를 떠날 것이지만, 나와 함께 견뎌냅니다.

먼저, 나는 당신이 사용하는 것이 좋습니다 편안한 라우팅 이를 통해 일부 레일에 액세스 할 수 있습니다.

form_for(@album) do |f|

그리고 당신이 #new_record? 그 대상의 상태.

둘째, 새로운 것과 함께 form_for 그 자리에서, 당신은 다음을 통해 당신의 견해를 말릴 수 있습니다.

<%= f.text_field :title %>

대신에:

<%= text_field :album, :title %>

마지막으로 변수가 "인스턴스 변수"라고도하는 레일에 @ 표시로 변수가 정의되는 이유에 대한 설명 :

레일에서 인스턴스 변수를 정의하면 "인스턴스"가 ActionController 그리고 ActionView 당신을 위해 모든 렌더링 등을 수행하도록 부름을받는 일련의 방법. 인스턴스 변수로 정의하면 컨트롤러, 컨트롤러, 도우미, 뷰 및 컨트롤러, 도우미 또는 뷰에서 렌더링 된 부분을 정의 한 후 호출하는 모든 메소드에서 사용할 수 있습니다.

기본적으로 전체 요청에 대한 것이지만 모델 내부에서는 액세스 할 수 없습니다.

다른 변수 사양은 클래스 변수입니다.@@some_useful_thing = 1) 및 글로벌 변수 ($some_other_useful_thing = 1) 및 상수 (ALL_IN_UP_CASE = 1).

다른 팁

변수 이름 앞의 @ 기호는 현재 클래스의 인스턴스 변수를 나타냅니다. : (콜론) 접두사는 기호를 만듭니다. 당신의 예에서 @album.id ID를 보내고 있습니다 @album 인스턴스 변수로 form_tag, 허용 form_tag 데이터베이스에서 해당 객체를 읽고 해당 객체의 적절한 데이터로 양식 필드를 채 웁니다. 당신이 통과하는 기호 text_field 방법은 무엇입니다 form_tag 데이터베이스에서 생성하는 객체의 특정 속성에 액세스하는 데 사용됩니다. 그런 다음 해당 속성의 값을 생성하는 텍스트 필드에 넣습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top