Rails View에서 @를 사용하는시기와 기호를 사용하는시기?
-
10-07-2019 - |
문제
<% 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
데이터베이스에서 생성하는 객체의 특정 속성에 액세스하는 데 사용됩니다. 그런 다음 해당 속성의 값을 생성하는 텍스트 필드에 넣습니다.