当前位置:  开发笔记 > 编程语言 > 正文

RJS:Ajaxified select_tag

如何解决《RJS:Ajaxifiedselect_tag》经验,为你挑选了1个好方法。

由于我在上一个问题上没有得到预期的答案,我会尝试简化和缩小我的问题:

如何构建一个使用AJAX(无提交按钮)来调用某个控制器的show动作的下拉菜单?

给出以下内容:

模型关联类别HABTM项目,因此下拉菜单包含所有类别名称.

应该实现下拉菜单的视图部分.下拉菜单下方是一个项目列表,应根据下拉菜单中的选择进行更改:

   

   
   
    <% @projects.each do |_project| %>
  • <%= link_to(_project.name, _project) %>
  • <% end %>

具有应该调用的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"}

你会如何实现这个?任何帮助都是非常苛刻的!



1> Chap..:

这个怎么样:

<% 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])

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有