Ruby on rails 使用Ajax替换基于Onclick事件的页面元素

Ruby on rails 使用Ajax替换基于Onclick事件的页面元素,ruby-on-rails,ajax,partials,page-replacement,Ruby On Rails,Ajax,Partials,Page Replacement,我正在重新阐述这个问题,因为我现在对这个问题有了更好的理解 我的应用程序有四种型号:用户、产品、品种和季节 用户 有很多:季节 有很多:产品,:通过=>:季节 有许多:品种,:至=>:季节 产品 有很多:季节 拥有多个:用户,:至=>:季节 有很多:品种 多样性 属于:产品 有很多:季节 拥有多个:用户,:至=>:seasons 季节 属于:产品 属于:用户 属于:品种 在product/show视图中,我列出了特定产品可用的每个品种,以及携带该特定产品的用户 当产品/展示页面首次加载时,我会通

我正在重新阐述这个问题,因为我现在对这个问题有了更好的理解

我的应用程序有四种型号:用户、产品、品种和季节

用户
有很多:季节
有很多:产品,:通过=>:季节
有许多:品种,:至=>:季节

产品
有很多:季节
拥有多个:用户,:至=>:季节
有很多:品种

多样性
属于:产品
有很多:季节
拥有多个:用户,:至=>:seasons

季节
属于:产品
属于:用户
属于:品种

在product/show视图中,我列出了特定产品可用的每个品种,以及携带该特定产品的用户

当产品/展示页面首次加载时,我会通过以下方式显示携带产品的所有用户:

<% @product.seasons.each do |c| %>  
  <%= link_to c.user.name, c.user %>  
<% end %>
日志引用了#4,并将4作为操作引用。4是我单击的项目的品种ID

以下是我的设置:

产品控制器#显示
@product=product.find(参数[:id])
@品种=@product.variates @users=@product.users

产品/展会视图 #列出拥有此产品的用户

<div id="userList">  
  <%= render :partial => "products/users" %>  
</div>  

#Lists the varieties available for this product  

<% @product.varieties.each do |variety| %>  
  <%= link_to_remote variety.name, :url => variety_path(variety) %>  
<% end %>  
品种/show.js.rjs
@page.replace_html“userList”,:partial=>“products/users”,:collection=>@variation.users

因此,目前,页面正在呈现和显示正确的html和数据。但onclick没有发挥作用。当我单击某个品种时,应用程序无法正确处理请求,用户列表也不会更改

更新 对安纳托利评论的回应:

我不确定到底需要增加什么路线。我尝试添加以下内容,但结果与以前相同:

map.resources:variations,:member=>{:show=>:get}

您能更具体地说明应该叫什么会员路线吗

应为

应为

如评论中所述(应列为答案):

Add:method=>:访问您的link\u to\u远程调用,对该URL使用“show”的正确HTTP动词。

如注释中所述(应作为答案列出):


Add:method=>:访问您的link\u to\u远程调用,对该URL使用正确的HTTP动词“show”。

我的问题中有一个拼写错误。我修好了。还有其他想法吗?在config/routes.rb中,应该在控制器的:member部分声明适当的操作(以避免未知错误操作没有响应4)。我添加了一个更新来跟进这一点。我不确定你认为应该增加什么路线。我想我发现了问题所在。Ajax默认使用POST,但您的路由需要GET,您应该修复如下链接::html=>{:method=>:GET}(我不是舒尔语法,但基本上是想法),这是我问题中的一个输入错误。我修好了。还有其他想法吗?在config/routes.rb中,应该在控制器的:member部分声明适当的操作(以避免未知错误操作没有响应4)。我添加了一个更新来跟进这一点。我不确定你认为应该增加什么路线。我想我发现了问题所在。默认情况下Ajax使用POST,但您的路由需要GET,您应该修复如下链接::html=>{:method=>:GET}(我不是舒尔语法,但基本上是想法)是的!这就是问题所在。谢谢,是的!这就是问题所在。谢谢
<% @variety.seasons.each do |c| %>  
  <%= link_to c.user.name, c.user %>  
<% end %>     
Processing VarietiesController#4 (for ip at 2009-09-24 16:02:29) [POST]
  Parameters: {"authenticity_token"=>"9pDgKrHNbg0aMklsQsGl5BQa34bfr0Ft8Fpbxki3XXw="}
ActionController::UnknownAction (No action responded to 4. Actions: check_vendor_role, index, and show)  
<div id="userList">  
  <%= render :partial => "products/users" %>  
</div>  

#Lists the varieties available for this product  

<% @product.varieties.each do |variety| %>  
  <%= link_to_remote variety.name, :url => variety_path(variety) %>  
<% end %>  
  def show
   @variety = Variety.find(params[:id])
    respond_to do |format|
      format.html
      format.xml  { render :xml => @variety}
      format.js
    end
  end