2016-04-28 12 views
0

このチュートリアルのコードはERB形式ですが、私はHAMLでそれをやっています。検索バーをHAML形式で作成する

ERBコード:

私は今HAMLに持って何
<%= form_tag search_movies_path, method: :get, class: "navbar-form navbar-right", role: "search" do %> 
    <p> 
    <%= text_field_tag :search, params[:search], class: "form-control" %> 
    <%= submit_tag "Search", name: nil, class: "btn btn-default" %> 

- if user_signed_in? 
    = link_to current_user.name, edit_user_registration_path 
    = link_to "Sign Out", destroy_user_session_path, method: :delete 
    = link_to "Selling", new_post_path, class: "button" 
    = form_tag posts_path, :method => :get do 
    = text_field_tag :search, params[:search] 
    = submit_tag "Search", name: nil, class: "btn btn-default" 
- else 
    = link_to "Sign in", new_user_session_path 
    = link_to "Sign Up", new_user_registration_path 
    = link_to "Selling", new_post_path, class: "button" 
    = form_tag posts_path, :method => :get do 
    = text_field_tag :search, params[:search] 
    = submit_tag "Search", name: nil, class: "btn btn-default" 

しかし、それは動作しません。誰もそれを行う方法を知っていますか?

私の検索方法は、次のようになります。

def search 
    if params[:search].present? 
    @posts = Post.search(params[:search]) 
    else 
    @posts = Post.all 
    end 
end 
+0

を「動作しない」とは何:ここ

はあなたが定義したアクションをヒットするsearch_posts_pathを使用して、投稿ERBの等価HAMLですか?あなたの説明から、それが何をすべきか、問題がどこにあるのかは明らかではありません。 – tadman

+0

このプロジェクトでは、私はsearchkick gemfileを実装しましたが、hamlの検索フォームをどのように書くのか分からない以外は、すべての作業を行っています。私はエラーがこのコード行から来ていると信じています: = form_tag posts_path、:method =>:do do ありがとうあなたの助けを借りて –

+0

HAMLとHTMLは1:1マッピングです。同じこと。 – tadman

答えて

0

あなたは(おそらくPostsControllerで)アクションを定義しsearch呼ばれていますが、indexアクションに行くposts_pathを参照していました。コードをindexに入れるか、search_posts_pathを使用する必要があります。

= form_tag search_posts_path, method: :get, class: "navbar-form navbar-right", role: "search" do 
    %p 
    = text_field_tag :search, params[:search], class: "form-control" 
    = submit_tag "Search", name: nil, class: "btn btn-default" 
関連する問題