0

select_tagを使用したドロップダウンリストがあり、その近くにボタンがあります。
次の要件があります:
1)送信ボタンをクリックするとbooks#show actionに移動します
2)次にshow actionでドロップダウンリストから選択した本を取得します
3)showメソッドはデータベースから取得する本の詳細を表示する必要があります
つまり、同じページがこの本の詳細で更新されるはずです。

しかし、私はこれを実行することはできません。
私からしてみれば:

<%=  form_tag books_path do |f|%>
<%= label_tag "select book" %>
<%= select_tag "selectbook", options_from_collection_for_select(@bid,"book_id","book_id"), :prompt => "Select book",:class => 'cmbbook' %>
<%=  submit_tag "view ...", :disable_with => "Please wait." ,:action => "show"%>
<%end%>

私のコントローラーで

if(params[:selectbook])
      @books =  Book.where("book_id = ?",params[:selectbook])
else
      @books = Book.all
end
@bid= Books.select("book_id").uniq;

respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @books }
      format.json { render json: @books }
end

create代わりにsubmitメソッドを呼び出すアクションshowと、新しい本のデータでページが自動更新されることも希望します。

4

2 に答える 2

0

まず、このようにフォームのコントローラーとアクションを指定する必要があります

form_tag( {:controller => 'your_controller', :action => "show"} )

ページの自動更新については、railsdocを読む必要があります

于 2012-08-27T18:15:28.713 に答える
0

私は何をすべきかを見つけました: getJson()
メソッドを適切なコントローラーとアクションに呼び出すメソッドをjavascriptで記述し、javascriptを使用してビューを再度更新する必要があります。したがって、ajax javascriptの問題は解決されますが、同じことができればいいのですが純粋なルビーコードで。

于 2012-09-11T10:43:06.810 に答える