我有使用select_tag的下拉列表,我有靠近它的按钮。
我有以下要求:
1)点击提交按钮,它应该去书#show action
2)然后在show动作中,我从下拉列表中检索所选书籍
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
而不是show
,我也希望页面自动更新新书数据。
答案 0 :(得分:0)
首先,您应该为表单指定控制器和操作,例如
form_tag( {:controller => 'your_controller', :action => "show"} )
对于自动更新页面,您应该read rails doc
答案 1 :(得分:0)
我找到了怎么做:
我必须在javascript中编写一个方法,将 getJson()方法调用到适当的控制器和动作,并再次使用javascript更新视图。因此,使用ajax javascript问题得到解决。但是,我希望我可以用纯红宝石代码做同样的事情。