programing

레일 매개 변수가 설명되었습니까?

stoneblock 2023. 6. 3. 08:07

레일 매개 변수가 설명되었습니까?

누가 설명해 줄 수 있습니까?paramsRails 컨트롤러: 어디에서 왔으며 무엇을 참조하고 있습니까?

  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 배열과 동일합니다.

다른 사람들이 지적했듯이,paramsGET 요청의 쿼리 문자열이나 POST 요청의 양식 데이터에서 값을 가져올 수 있지만 다음과 같은 세 번째 위치에서 값을 가져올 수도 있습니다.URL의 경로입니다.

Rails는 경로를 사용하여 해당 컨트롤러 작업으로 요청을 보냅니다.이러한 경로는 URL에서 추출되어 다음에 입력되는 세그먼트를 포함할 수 있습니다.params예를 들어, 다음과 같은 경로가 있는 경우:

match 'products/:id', ...

그런 다음 URL로 요청합니다.http://example.com/products/42설정할 것params[:id]로.42.

매개 변수에는 다음과 같은 세 가지 매개 변수 그룹이 포함됩니다.

  1. 사용자 제공 매개 변수
  • GET(http://example.com/url?param1=value1&param2=value2param[:param1] 및 param[:param2]설정합니다.)
  • POST(예: JSON, XML은 자동으로 구문 분석되고 Param에 저장됨)
  • 참고: 기본적으로 Rails는 사용자가 제공한 매개변수를 복제하여 UsersController에 있는 경우 wrap_parameters 설정을 사용하여 변경할 수 있습니다.
  1. 라우팅 매개 변수
  • match '/user/:id' routes.rb매개 변수를 설정합니다[:id]
  1. 기본 매개 변수
  • 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