>

쇼 페이지에 대한 링크를 포함하기 위해 250 개가 넘는 게시물을 잘라내려고합니다. 내 컨트롤러에는 다음이 있습니다.

지금 인덱스보기에 있습니다 :

<% @posts.includes(:categories, :author).each do |posts| %>
<%= truncate_html posts.content.html_safe, :length => 250, omission:'...Continue Reading' %>
<%= link_to "...Continue Reading", post_path(posts.url_name)%>

오류없이 올바르게로드됩니다. 현재 누락 섹션이 새 페이지로 클릭되지 않으므로 link_to에 추가되었습니다. 나는 다음과 같은 것을 시도했다 :

<%= truncate_html posts.content.html_safe, :length => 250, link_to: "...Continue Reading", post_path(posts.url_name) %>

다음 오류로 종료되었습니다 :

syntax error, unexpected ')', expecting => ", post_path(posts.url_name) );@output_buffer.safe_append=' ^

그래서 나는 헬퍼에서 그것을 빌드하고 대신 헬퍼를 연결하기로 결정했습니다. 내 도우미를 위해 다음을 만들었습니다.

def post_length
 output = truncate(@posts.content, length: 250)
 output += link_to('...Continue Reading', post_path(posts.url_name)) if post.content.size > 250
 output.html_safe
end

그런 다음 색인에 다음을 입력하십시오 :

<%= post_length %>

정의되지 않은 메소드 'content'가 나타납니다. 도우미에서 일을 시도했습니다 : posts.content, post.content, @ post.content 등 작동하지 않습니다. 도우미를 잘못하고 있습니까?

또한 다음을 시도했습니다 :

def post_truncate(&block)
truncate(@posts.content,
  length: 250,
  separator: ' ',
  omission: "...") {
    link_to "Something", post_path(posts.url_name)
  }
  )
end

keyword_end (SyntaxError)를 기대하면서 구문 오류, 예기치 않은 ')'가 나타납니다.

  • 답변 # 1

    유효한 답변 :

    <%= raw (truncate_html posts.content.html_safe, :length =>500, :omission => "...#{link_to 'Continue Reading', post_path(posts.url_name)}") %>
    
    

    도움말을 사용하여 끝나지 않았지만 이것이 효과가있었습니다.

  • 답변 # 2

    의견에 쓴 것처럼 :

    마지막 예에서 오류가 발생합니다 :

    syntax error, unexpected ')', expecting keyword_end (SyntaxError)
    
    

    예기치 않은 ) 가 있기 때문에  끝 전에 한 줄. 종결 )   ommision: "..." 직후  그래서 당신은 다른 것을 필요로하지 않습니다.

    헬퍼 메소드는 다음과 같아야합니다 :

    def post_truncate(&block)
      truncate(@posts.content,
        length: 250,
        separator: ' ',
        omission: "...") {
          link_to "Something", post_path(posts.url_name)
        }
    end
    
    

    제 생각에는 이것이 link_to 를 사용하는 올바른 방법입니다  링크를 추가하고 답변에서와 같이 문자열 보간을 사용하지 마십시오.

  • 이전 java - 안드로이드 @Multipart에 대한 개조 기본 헤더 제거
  • 다음 android - 스피너를 선택한 경우 TextInputLayout에서 포커스 제거