使用AJAX jQuery的Rails简单类似按钮

使用AJAX jQuery的Rails简单类似按钮,ajax,button,form-for,Ajax,Button,Form For,我要为我的食谱课建造一个类似的机器 class LikesController def update @like = Like.find(params[:id]) end def destroy @like = Like.find(params[:id]) @recipe = Recipe.find(params[:id]) @like.destroy end end def show @recipe = Recipe.find(param

我要为我的食谱课建造一个类似的机器

class LikesController
  def update
    @like = Like.find(params[:id])
  end

  def destroy
    @like = Like.find(params[:id])
    @recipe = Recipe.find(params[:id])
    @like.destroy
  end
end

def show
  @recipe = Recipe.find(params[:id])
end
recipes/show.html.erb

<div id="like_form">
  <% if like = current_user.likes.find_by_recipe_id(@recipe.id) %>
    <%= form_for like, :html => { :method => :delete },:remote => true do |f| %>
      <%= f.submit "Unlike" %>
    <% end %>
  <% else %>
    <%= form_for current_user.likes.create(:recipe_id => @recipe.id), :remote => true do |f| %>
      <%= f.hidden_field :recipe_id %>
      <%= f.hidden_field :user_id %>
      <%= f.submit "Like" %>
    <% end %>
  <% end %>

{:method=>:delete},:remote=>true do | f |%>
@recipe.id),:remote=>true do | f |%>
likes/destroy.js.erb

$("#like_form").html("<%= escape_javascript(render('recipes/like')) %>")
$(“#like_form”).html(“”)
likes/update.js.erb

$("#like_form").html("<%= escape_javascript(render('recipes/unlike')) %>")
$(“#like_form”).html(“”)
recipes/_.html.erb

<%= form_for @like, :html => { :method => :delete },
                :remote => true do |f| %>
  <%= f.submit "Unlike" %>
<% end %>
<%= form_for current_user.likes.create(:recipe_id => @recipe.id), :remote => true do |f| %>
  <%= f.hidden_field :recipe_id %>
  <%= f.hidden_field :user_id %>
  <%= f.submit "Like" %>
<% end %>
<% if like = current_user.likes.find_by_recipe_id(@recipe.id) %>
  <% else %>
    <%= form_for current_user.likes.build(:recipe_id => @recipe.id), :remote => true do |f| %>
    <%= f.hidden_field :recipe_id %>
    <%= f.hidden_field :user_id %>
    <%= f.submit "Like" %>
  <% end %>
<% end %>
{:method=>:delete},
:remote=>true do | f |%>
recipes/_like.html.erb

<%= form_for @like, :html => { :method => :delete },
                :remote => true do |f| %>
  <%= f.submit "Unlike" %>
<% end %>
<%= form_for current_user.likes.create(:recipe_id => @recipe.id), :remote => true do |f| %>
  <%= f.hidden_field :recipe_id %>
  <%= f.hidden_field :user_id %>
  <%= f.submit "Like" %>
<% end %>
<% if like = current_user.likes.find_by_recipe_id(@recipe.id) %>
  <% else %>
    <%= form_for current_user.likes.build(:recipe_id => @recipe.id), :remote => true do |f| %>
    <%= f.hidden_field :recipe_id %>
    <%= f.hidden_field :user_id %>
    <%= f.submit "Like" %>
  <% end %>
<% end %>
@recipe.id),:remote=>true do | f |%>
单击“不像”后,应呈现“像”按钮。但是我不知道如何使_like.html中参数的形式_部分化

我不知道如何获取recipe.id的值。如何使recipe.id在_like.html.erb中可用

ActionView::Template::Error (undefined method `id' for nil:NilClass):1:
<%= form_for current_user.likes.create(:recipe_id => @recipe.id), 
                              :remote => true do |f| %>
2:   <%= f.hidden_field :recipe_id %>
3:   <%= f.hidden_field :user_id %>
4:   <%= f.submit "Like" %>
  app/views/recipes/_like.html.erb:1:in
  _app_views_recipes__like_html_erb___1003281063_65806008'
  app/views/likes/destroy.js.erb:1:in
  _app_views_likes_destroy_js_erb___41116873_65874912'
ActionView::Template::Error(nil:NilClass的未定义方法'id'):1:
@配方id),
:remote=>true do | f |%>
2:   
三:
4:   
app/views/recipes/_like.html.erb:1:in
_应用程序查看食谱,如html、erb、1003281063、65806008
app/views/likes/destroy.js.erb:1:in
_应用程序浏览量、喜欢度、破坏度
修复了它:

_like.html.erb

<%= form_for @like, :html => { :method => :delete },
                :remote => true do |f| %>
  <%= f.submit "Unlike" %>
<% end %>
<%= form_for current_user.likes.create(:recipe_id => @recipe.id), :remote => true do |f| %>
  <%= f.hidden_field :recipe_id %>
  <%= f.hidden_field :user_id %>
  <%= f.submit "Like" %>
<% end %>
<% if like = current_user.likes.find_by_recipe_id(@recipe.id) %>
  <% else %>
    <%= form_for current_user.likes.build(:recipe_id => @recipe.id), :remote => true do |f| %>
    <%= f.hidden_field :recipe_id %>
    <%= f.hidden_field :user_id %>
    <%= f.submit "Like" %>
  <% end %>
<% end %>

@recipe.id),:remote=>true do | f |%>