[ruby-on-rails] 레일에 매개 변수가 있는지 테스트하는 방법
Ruby on Rails의 IF 문을 사용하여 요청 매개 변수가 설정되어 있는지 테스트하고 있습니다. 두 매개 변수의 설정 여부에 관계없이 다음 if 블록의 첫 번째 부분이 트리거됩니다. params [: one]과 params [: two]가 모두 설정된 경우이 부분 만 트리거되도록하려면 어떻게해야합니까?
if (defined? params[:one]) && (defined? params[:two])
... do something ...
elsif (defined? params[:one])
... do something ...
end
답변
당신이 원하는 has_key?
:
if(params.has_key?(:one) && params.has_key?(:two))
확인 만하면 if(params[:one])
“없음은 있지만”및 “거짓은 있지만”값에 속아서 존재 여부를 묻습니다. 차별화해야 할 수도 있습니다.
- 전혀 없습니다.
- 하지만
nil
. - 하지만
false
. - 빈 문자열 만 있습니다.
게다가. 정확한 상황에 대한 자세한 내용 없이는 말하기가 어렵습니다.
답변
나는 ~의 팬입니다
params[:one].present?
params[sym]
양식을 유지하기 때문에 읽기가 더 쉽습니다.
답변
공백으로 사용 하시겠습니까? http://api.rubyonrails.org/classes/Object.html#method-i-blank-3F
unless params[:one].blank? && params[:two].blank?
비어 있거나 nil이면 true를 반환합니다.
또한 부울 값을 테스트하는 경우 작동하지 않습니다.
>> false.blank?
=> true
이 경우 사용할 수 있습니다
unless params[:one].to_s.blank? && params[:two].to_s.blank?
답변
다음과 같이 간결하게 작성할 수 있습니다.
required = [:one, :two, :three]
if required.all? {|k| params.has_key? k}
# here you know params has all the keys defined in required array
else
...
end
답변
파이처럼 간단합니다.
if !params[:one].nil? and !params[:two].nil?
#do something...
elsif !params[:one].nil?
#do something else...
elsif !params[:two].nil?
#do something extraordinary...
end
답변
if params[:one] && params[:two]
... do something ...
elsif params[:one]
... do something ...
end
답변
매개 변수에 기본값을 제공하는 매우 간단한 방법 : params[:foo] ||= 'default value'