1

ここ数日、handlebars.js のテンプレートを読んで慣れてきましたが、すばらしいです。

現在、simple_format、time_ago_in_words などのヘルパーを使用した html の束を持つパーシャルの 1 つで作業しています。明らかに、これらのヘルパーはハンドルバーでは使用できません。だから私はこのようなことをしたいと思います:

def get_micropost

   respond_to do |format|   
     format.json { render json: formatted_micropost_json_data(Micropost.where("id < ?", params[:micropost_id]).first) } 
   end

end

マイクロポスト ヘルパー:

module MicropostsHelper

    def formatted_micropost_json_data(micropost)

        content: simple_format h(micropost.content)
        created_at: time_ago_in_words(micropost.created_at)
        id: micropost.id
        image: micropost.image
        link: micropost.link
        poster_id: micropost.poster_id
        updated_at: micropost.updated_at 
        user_id: micropost.user_id 

    end

end

したがって、ajax 呼び出しを介して JSON を取得すると、既に正しくフォーマットされています。次に、ハンドルバー変数を通常どおり表示するだけです。

これでも機能しますか?

そうでない場合、これを行うための最良の方法は何ですか?

敬具

4

1 に答える 1

4

あなたのコードを書き直すことをお勧めします:

class Micropost
  def formatted_json_data
    {
      content:    simple_format(h(self.content)),
      created_at: time_ago_in_words(self.created_at),
      id:         self.id,
      image:      self.image,
      link:       self.link,
      poster_id:  self.poster_id,
      updated_at: self.updated_at,
      user_id:    self.user_id
    }
  end
end

def get_micropost
  respond_to do |format|   
    format.json do
      posts = Micropost.where("id < ?", params[:micropost_id])
      data = posts.first.formatted_json_data
      render(json: data)
    end
  end
end

メソッド内でハッシュ リテラルを使用する必要がありました。もともとあったものは、構文的に有効な Ruby コードではありませんでした。

また、チェーンされたメソッド呼び出しの長い行を分割すると、より有益なエラー メッセージが表示され、それらを処理するためのより明確な機会が提供される場合があります。

于 2012-05-24T16:55:17.187 に答える