2016-09-26 2 views
1

이 질문은 이전에 묻지 만보다 구체적인 사례입니다.params 배열의 키는 어디에서 가져 옵니까?

Ruby on Rails의 웹 페이지 "Getting Started"[http://guides.rubyonrails.org/getting_started.html] 웹 페이지에서는 간단한 블로그를 만드는 방법을 알려줍니다. 나는 그것의 대부분을 다음 해요,하지만 어디서하지 않습니다 article_id를 키 값에서 오는 :

def create 
    @article = Article.find(params[:article_id]) 
    ...some other stuff... 
end 

이는 웹 응용 프로그램의 commentsController에 위치하고 있습니다. 모든 기사 관련 코딩은 articlesController에 있습니다.

밑줄은 ID가 속한 클래스의 표시기입니까? 의미는이 핵심 가치가 먼저 기사 params 배열을 찾은 다음 id를 모두 찾는다는 것입니까? RoR의 기능처럼? 아니면 가르치는 목적으로 쓰여지고 실제로 아무것도 언급하지 않은 상징입니까?

후자의 경우 사용할 키 값을 어떻게 알 수 있습니까?

GET 데이터가 URL에 표시되지만 URL을 호출하기 전에 데이터가 무엇인지 알 수 있도록 설정하는 방법은 무엇입니까?

답변

4

routes.rb은 경로를 정의하며, 일치하는 경로에는 변수 세그먼트가있을 수 있으며 변수 세그먼트는 컨트롤러의 params 해시를 통해 사용할 수 있습니다. 해당 작업에 당신을 이끌

당신이 params[:article_id]를 사용하는 경우 경로는 같은 것을 포함 된 것 :

/articles/:article_id 

params 또한, 쿼리 문자열 또는 양식 데이터를 통해 함께 전달 된 값을 포함하지만 같은 ID를 기준으로 레코드를 찾는 것과 마찬가지로 ID는 대개 URL의 구성 요소입니다.

밑줄은 ID가 속한 클래스의 표시기입니까?

아니요, 단순히 이름의 일부입니다.

후자의 경우 사용할 키 값을 어떻게 알 수 있습니까?

라우트 파일에 사용할 키를 정의 했으므로

+0

"t.references 행은 articles_id라는 정수 열과 그 색인, article 테이블의 id 열을 가리키는 외래 키 제약 조건을 만듭니다." – RM3

+3

@ RM3 마이그레이션, 외래 키, 열 및 테이블은 모두 여기에서 전혀 관련이 없습니다. 이것은 라우팅과'params' 해시에 대한 질문입니다.이 것은 여러분의 모델이나 데이터베이스의 레이아웃과 아무 관련이 없습니다. – meagar

+0

그래서'/ articles/: article_id'는 거기에 그냥 서있는 상징입니까? 그러므로': my_id'를 생성하거나 변경하지 않고 동일한 결과를 얻을 수 있습니까? 기사에 대한이 연습의 모든 경로는'/ article/: id'가 아니라'/ : article_id'입니다. – RM3

관련 문제