使用从rails 3.2中的下拉列表中选择的新数据更新页面

时间:2012-08-27 14:06:07

标签: ruby ruby-on-rails-3

我有使用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,我也希望页面自动更新新书数据。

2 个答案:

答案 0 :(得分:0)

首先,您应该为表单指定控制器和操作,例如

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

对于自动更新页面,您应该read rails doc

答案 1 :(得分:0)

我找到了怎么做:
我必须在javascript中编写一个方法,将 getJson()方法调用到适当的控制器和动作,并再次使用javascript更新视图。因此,使用ajax javascript问题得到解决。但是,我希望我可以用纯红宝石代码做同样的事情。