레일 매개 변수가 설명되었습니까?
누가 설명해 줄 수 있습니까?params
Rails 컨트롤러: 어디에서 왔으며 무엇을 참조하고 있습니까?
def create
@vote = Vote.new(params[:vote])
item = params[:vote][:item_id]
uid = params[:vote][:user_id]
@extant = Vote.find(:last, :conditions => ["item_id = ? AND user_id = ?", item, uid])
last_vote_time = @extant.created_at unless @extant.blank?
curr_time = Time.now
end
저는 이 코드를 한 줄씩 읽고 무슨 일이 일어나고 있는지 이해할 수 있으면 좋겠습니다.
사용자가 페이지를 요청할 때 사용자의 브라우저에서 매개 변수가 전송됩니다.가장 일반적인 HTTP GET 요청의 경우 매개 변수가 URL에 인코딩됩니다.예를 들어, 사용자의 브라우저가 요청한 경우
http://www.example.com/?foo=1&boo=octopus
그리고나서params[:foo]
"1"일 것이고params[:boo]
"무시"가 될 것입니다.
HTTP/HTML에서 매개 변수는 실제로 키와 값이 문자열인 일련의 키-값 쌍에 불과하지만, Ruby on Rails는 매개 변수를 해시가 있는 해시로 만들기 위한 특별한 구문을 가지고 있습니다.예를 들어, 사용자의 브라우저가 요청한 경우
http://www.example.com/?vote[item_id]=1&vote[user_id]=2
그리고나서params[:vote]
엉망진창이 될 거예요params[:vote][:item_id]
"1"일 것이고params[:vote][:user_id]
"2"가 됩니다.
Ruby on Rails 매개변수는 PHP의 $_REQUEST 배열과 동일합니다.
다른 사람들이 지적했듯이,params
GET 요청의 쿼리 문자열이나 POST 요청의 양식 데이터에서 값을 가져올 수 있지만 다음과 같은 세 번째 위치에서 값을 가져올 수도 있습니다.URL의 경로입니다.
Rails는 경로를 사용하여 해당 컨트롤러 작업으로 요청을 보냅니다.이러한 경로는 URL에서 추출되어 다음에 입력되는 세그먼트를 포함할 수 있습니다.params
예를 들어, 다음과 같은 경로가 있는 경우:
match 'products/:id', ...
그런 다음 URL로 요청합니다.http://example.com/products/42
설정할 것params[:id]
로.42
.
매개 변수에는 다음과 같은 세 가지 매개 변수 그룹이 포함됩니다.
- 사용자 제공 매개 변수
- GET(
http://example.com/url?param1=value1¶m2=value2
param[:param1] 및 param[:param2]를 설정합니다.) - POST(예: JSON, XML은 자동으로 구문 분석되고 Param에 저장됨)
- 참고: 기본적으로 Rails는 사용자가 제공한 매개변수를 복제하여 UsersController에 있는 경우 wrap_parameters 설정을 사용하여 변경할 수 있습니다.
- 라우팅 매개 변수
match '/user/:id'
에routes.rb
매개 변수를 설정합니다[:id]
- 기본 매개 변수
params[:controller]
그리고.params[:action]
항상 사용할 수 있으며 현재 컨트롤러 및 작업이 포함되어 있습니다.
기본적으로 매개변수는 레일 적용에 대한 사용자 지정 데이터입니다.
양식을 게시할 때 일반적으로 GET 요청이 아닌 POST 요청으로 게시합니다.사이트를 탐색할 때 도움이 될 경우 일반 레일 요청을 GET 요청으로 생각할 수 있습니다.
양식을 제출하면 컨트롤이 응용프로그램에 다시 던져집니다.양식에 제출한 값을 어떻게 얻습니까? params
방법입니다.
당신 코드에 대해서요 @vote = Vote.new params[:vote]
매개 변수 데이터[:vote]를 사용하여 새 데이터베이스에 대한 투표를 만듭니다.제출된 사용자의 이름이 name:vote인 경우 모든 데이터는 해시의 :vote 필드에 있습니다.
다음 두 줄은 항목을 가져오는 데 사용되며 uid 사용자가 양식에 제출했습니다.
@extant = Vote.find(:last, :conditions => ["item_id = ? AND user_id = ?", item, uid])
조건이 item_id = item이고 user_id = uid인 데이터베이스에서 최신 또는 마지막으로 삽입된 투표를 찾습니다.
다음 줄은 마지막 투표 시간과 현재 시간이 걸립니다.
에서는, 레일쪽는서에,,params
는 를반는메입니다서드하환▁an▁that다를 하는 메소드입니다.ActionController::Parameters
물건.https://stackoverflow.com/a/44070358/5462485 을 참조하십시오.
언급URL : https://stackoverflow.com/questions/6885990/rails-params-explained
'programing' 카테고리의 다른 글
Panda를 사용하여 *.xlsx long URL을 셀에 저장하는 방법 (0) | 2023.06.03 |
---|---|
해시 키를 다른 키로 대체하려면 어떻게 해야 합니까? (0) | 2023.06.03 |
루비: kind_of? vs. instance_of?vs. is_a? (0) | 2023.06.03 |
명령 프롬프트에서 apk 파일을 설치하시겠습니까? (0) | 2023.06.03 |
Android에서 INSTALL_FAILED_INSUFFICY_STORIAGE 오류에 대한 솔루션 (0) | 2023.06.03 |