0

Railsアプリを開発しています。フォームの送信とレンダリングに問題があります。「表示」ビューのコードは次のとおりです。

  <%= form_for :search_form do |f| %>
    <%= f.text_field :search_tag %><br>
    <%= f.submit "find" %>
    <% end %>
  <% @array_bookmark = @bookmark.class == Array ? @bookmark : [@bookmark] %>
  <% @array_bookmark.each do |book| %>
  <li><%= book.url%>
  <b>Title:</b>
  <li><%= book.title%>
  <% end %>

コントローラーのアクションは次のとおりです。

def show
  if request.post?
  @bookmark = Bookmark.new(params[:search_form])

  bookmark = Bookmark.find_by_title(@bookmark.search_tag)
  respond_to do |format|
    format.html # index.html.erb
    format.json { render json: @bookmark }
  end
  end  
end

ビューは検索フォームです。フォームが送信されると、コントローラーに行き、データベースに入力された要素を検索し、それが表示される同じビューに戻ります。
どうすればできますか?解決策を教えてください。

4

1 に答える 1

0

「rails search example」の Google 検索の最初の結果はhttps://we.riseup.net/rails/simple-search-tutorialです。

Railsのドキュメントを読む時間をとることをお勧めします。ここから開始http://guides.rubyonrails.org/action_controller_overview.html

また、 form_for ヘルパーは、特定のモデルhttp://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-form_forに関するフォームを作成するためのものです。ランダムなカスタム フォームを作成する場合、必要なヘルパーは form_tag http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-form_tagです。

また、通常、表示ビューは個々のリソースを表示するためのものです。インデックス ビューは、リソースのコレクションを表示するためのものです。もちろん、これらは単なる規則であり、規則ではありませんが、コードがここでの規則に違反していることをお勧めします。

于 2012-12-13T16:09:11.627 に答える