2016-04-27 8 views
0

私は私のWebアプリケーションに簡単なタグシステムを構築するためのSearchform(私はこれらのステップに続いてきた:http://www.sitepoint.com/tagging-scratch-rails/)をのRails:タグ

だから、今、それは人々が、例えばタグをクリックすることができ正常に動作しています犬と彼らは "app.com/search/dogs"に行きます。

しかし、人々はフォーム入力フィールドを使用してタグを検索する必要があります。現時点では私が試したこの:

にユーザーをもたらします
<%= form_tag('search', method: 'get', controller: 'static', action: 'home') do %> 
    <%= text_field_tag :tag, params[:tag], placeholder: "Search Posts" %> 
    <%= submit_tag("Search") %> 
<% end %> 

:「app.com/search/?utf8=✓&タグ=犬&がコミット=検索」、それは働いていません。他の論理を達成する方法はありますか?

ここではいくつかの(多分)面白いコードサンプル:

routes.rbを

# search by tags 
get 'search/:tag', to: 'static#home', as: "search" 

post.rb

def self.tagged_with(name) 
Tag.find_by_name!(name).posts 
end 

static_controller.rb

def home 
    if params[:tag] 
    @posts = Post.tagged_with(params[:tag]) 
    else 
    @posts = Post.all 
    end 
end 

posts_helper.rb

def tag_links(tags) 
    tags.split(",").map{|tag| link_to tag.strip, search_path(tag.strip) }.join(" ") 
end 

申し訳ありませんが、私は事前にありがとう:)本当の初心者ですよ!

答えて

1

私はノートから始めましょう。 form_tagは、controllerまたはactionのパラメータを使用しません。今はHTMLタグの属性として印刷されています。

おそらく行うためのもの
<%= form_tag('search', method: 'get', controller: 'static', action: 'home') do %> 

# Generates 
<form controller="static" action="search" accept-charset="UTF-8" method="get"> 

<%= form_tag('search', method: 'get') do %> 

を今、戻ってあなたの質問にに。基本的には、フォームのaction属性を動的に設定する必要があります。これは、JavaScriptを使用している場合にのみ可能です。

は、検索フォームタグにクラスを追加します。

<%= form_tag('search', method: 'get', class: 'tag-search-form') do %> 

があなたのページにこのjavascriptのコードを追加します。

$(document).ready(function(){ 
    $('.tag-search-form').submit(function(e){ 
    var new_action_url = $(this).attr('action') + "/" + $('#tag', this).val(); 
    $(this).attr('action', new_action_url) 
    }); 
}); 

これはsearch/{tag-field-value} URLにユーザーを送信します。しかし、それにもすべてのパラメータが追加されます(search/test?utf8=✓&tag=test&commit=Search)。それらを必要としない場合は、送信する前にjavascriptでフォームを削除するか、フォームのmethod属性をPOSTに設定する必要があります。

+0

申し訳ありませんが、私は最初に愚かなことを試みたことがわかります!しかし、あなたのソリューションは素晴らしいです!どうもありがとうございました! – FNGR

関連する問題