由于我在上一个问题上没有得到预期的答案,我会尝试简化和缩小我的问题:
如何构建一个使用AJAX(无提交按钮)来调用某个控制器的show动作的下拉菜单?
给出以下内容:
模型关联是类别HABTM项目,因此下拉菜单包含所有类别名称.
应该实现下拉菜单的视图部分.下拉菜单下方是一个项目列表,应根据下拉菜单中的选择进行更改:
具有应该调用的show-action 的Categories控制器:
class CategoriesController < ApplicationController def show # params[:id] should be the choice the user made in the dropdown menu @category = Category.find(params[:id]) @projects = @category.projects.find(:all) respond_to do |format| format.html # show.html.erb format.js # needed for ajax response? end end def index @projects = Category.find(params[:id]).projects.find(:all) @category = @project.categories.first respond_to do |format| format.html # index.html.erb end end end
在Categories控制器中调用show-action 的路径:
category GET /categories/:id {:controller=>"categories", :action=>"show"}
你会如何实现这个?任何帮助都是非常苛刻的!
这个怎么样:
<% form_for :category, :url => { :action => "show" } do |f| %> <%= select_tag :id, options_from_collection_for_select(Category.find(:all), :id, :name), { :onchange => "this.form.submit();"} %> <% end %>
这将调用传统的html调用,因此它将刷新整个页面(并响应format.html).
然后控制器将通过提交的[:id]找到类别
@category = Category.find(params[:id])