2015-01-02 4 views
0

여러 번 호출 할 도우미에 대한 보간 내에서 link_to 블록 (link_to와 함께)을 만들려고합니다. 따라서이 코드는 프로젝트에서 한 번만 갖고 싶습니다. 하지만 아래의 코드를 실행하려고하면 "예기치 않은 키워드 클래스가 발생합니다. keyword_do 또는 '{'또는 '(' '그래서이 작업을 수행 할 수 있는지 또는 가능한지 여부를 알 수 없습니다.) link_to 블록은 내가 맨 아래에있는 html_safe 필요한 이유 HTML 코드가 그것으로 연결된 것, 즉이다link_to를 블록으로 보간하는 법

여기
def example_helper_method() 
    example_string = "" 
    example_string += "SOME HTML ..." 
    example_string += "#{ link_to edit_foo_url(param1, param2, param3: 1) do }" 
    example_string += "<button class='btn btn-small #{foo_method(1)}' type='button'>Example</button>" 
    example_string += "#{end}" 
    example_string += "SOME HTML ..." 
    return example_string.html_safe 
end 

내가보기에이 메서드를 호출하고있는 곳입니다

<%= example_helper_method() %> 

감사합니다 :. D

답변

3

link_to은 문자열을 반환하므로 왜 모든 보간이 필요합니까? 트릭해야 내부 아웃 두 번째 문자열을 설정하고이 같은 html_safe 호출하지만 뭔가를 이동하려면 : 그래서 당신이 html_safe 할 필요가 없습니다

def example_helper_method() 
    example_string = '' 
    example_string += "SOME HTML ..." 
    example_string += link_to edit_foo_url(param1, param2, param3: 1) do 
    "<button class='btn btn-small #{foo_method(1)}' type='button'>Example</button>".html_safe 
    end 
    example_string + "SOME HTML..." 
end 

link_to 이미 HTML 안전 무언가를 반환해야한다 무엇 그것은 돌아온다. 문자열에 HTML을 만들 때 블럭 안의 html_safe 호출을 원한다. 실제로 거기에 따라 SOME HTML 문자열에서 html_safe 전화가 필요할 수도 있고 필요하지 않을 수도 있습니다.

+0

나는 link_to 블록이 일부 html 코드 사이에 있고 그것과 연결되어 있다는 것을 잊어 버렸습니다. 그래서 나는 example_string의 맨 아래에 html_safe를 사용합니다. –

+0

다시'link_to'는 문자열을 반환하기 때문에 보간 할 필요가 없습니다. 필요에 따라'html_safe' 호출로 간단한 문자열 연결만으로 충분합니다. –

+0

우우, 미안하다. 네가 무슨 말을했는지 이해하고있다. 그렇다. –