2014-07-17 4 views
0

[] 사이에없는 텍스트를 텍스트 상자에서 제거하려고합니다.정의되지 않은 메서드 'match'for nil : NilClass

<%= f.text_field :transport_relay, :value => f.object.transport_relay.match(/\[(.*?)\]/)[1] %> 

을하지만 난 new 기록을 만들려고 할 때 예상대로 새 레코드와 일치하도록 지적하고있다, 그것은, "undefined method `match' for nil:NilClass" 오류를 표시 :이 edit 기록 형태로 작동합니다. 이 문제를 어떻게 처리합니까?

I는 몇 가지 솔루션을 시도 즉 본 :
<%= f.text_field :transport_relay, :value => f.object.transport_relay.match(/\[(.*?)\]/)[1] if f.object.transport_relay %> 

오류 문제를 해결할뿐만 아니라, 프로세스의 입력 텍스트 박스를 제거 하였다.

답변

3

if은 전체 f.text_field가 아닌 : value 인수에만 적용되기를 원합니다.

<%= f.text_field :transport_relay, :value => (f.object.transport_relay.match(/\[(.*?)\]/)[1] if f.object.transport_relay) %> 
+0

그건 나를 위해 일한 매력처럼 :). 귀하의 의견과 시간을 보내 주셔서 감사합니다. – galavantis

0

당신은

<%= f.text_field :transport_relay, :value => f.object.transport_relay.nil? ? nil:f.object.transport_relay.match(/\[(.*?)\]/)[1] %> 

처럼 쓸 수있는 값 값하지만 난 당신이 모델

def transport_relay_value 
    transport_relay.nil? nil:transport_relay.match(/\[(.*?)\]/)[1] 
end 

<%= f.text_field :transport_relay, :value => f.object.transport_relay_value %> 
0

시도하는 그 논리를 추출하면 좋을 것이라고 생각 :()는 주위에 넣어 이 : def nil.match; nil end

1

여기가 좋다 gemandan d gem (이 문제를 처리하려면 "정의되지 않은 메소드`nil : anyClock"에 대한 any_method ').

관련 문제