Ruby on rails 我的rails应用程序的收藏夹模型

Ruby on rails 我的rails应用程序的收藏夹模型,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我有一个用户和指南模型 我希望用户能够将一条指南标记为他们最喜欢的,然后查看所有他们最喜欢的指南的列表 不太对。我不确定“收藏夹”操作是否正确添加收藏夹;或者,如果添加正确,则在“收藏夹”视图中显示不正确(因此“显示”操作可能不正确) *控制器*指南\u CONTROLLER.rb def favourite type = params[:type] if type == "favourite" @guideline= Guideline.find_all_by_id(par

我有一个用户和指南模型

我希望用户能够将一条指南标记为他们最喜欢的,然后查看所有他们最喜欢的指南的列表

不太对。我不确定“收藏夹”操作是否正确添加收藏夹;或者,如果添加正确,则在“收藏夹”视图中显示不正确(因此“显示”操作可能不正确)

*控制器*指南\u CONTROLLER.rb

def favourite
   type = params[:type]
   if type == "favourite"
    @guideline= Guideline.find_all_by_id(params[:guideline_id])
    current_user.favourite_guidelines << @guideline
     redirect_to :back, notice: 'You favourited #{@guideline.name}'
    elsif type == "unfavourite"
     current_user.favourite_guidelines.delete(@guideline)
     redirect_to :back, notice: 'Unfavourited #{@guideline.name}'

    else
    # Type missing, nothing happens
   redirect_to :back, notice: 'Nothing happened.'
    end
  end
 def show

    @user = User.find_by_profile_name(params[:id])
    if @user 
        @guidelines = @user.favourite_guidelines.all
        render action: :show
    else
        render file: 'public/404', status: 404, formats: [:html]
    end
  end
end
*ROUTES*ROUTES.rb

get "guidelines/favourite"
  get "favourites/show"
*MODEL*user.rb

*MODEL*favorite_guidelines.rb

  attr_accessible :guideline_id, :user_id

  belongs_to :user
*视图*指南/index.html.erb

<% if current_user %>
    <%= link_to "favourite",   guidelines_favourite_path(guideline, type: "favourite"), method: "get" %>
    <%= link_to "unfavourite", guidelines_favourite_path(guideline, type: "unfavourite"), method: "get" %>

*视图*收藏夹/show.html.erb

<% if @guidelines %>
    <% @guidelines.each do |guideline| %>

        <div class="well">
            <%= link_to guideline.title, guideline %>
            <br />
            <%= guideline.content %>
            <br />
            Added <%=  time_ago_in_words(guideline.created_at) %> ago
        </div>
    <% end %>
<% end %>



前加
根据您的评论,以下返回值为
nil

@guideline= Guideline.find_by_id(params[:guideline_id])  #=> nil
current_user.favourite_guidelines << nil #Gives association mismatch error 
在您之前的案例中:

 @guideline= Guideline.find_all_by_id(params[:guideline_id]) #=> []
 current_user.favourite_guidelines << [] #=> Valid and inserting nothing
@guideline=guideline.find_all_by_id(params[:guideline_id])#=>[]
当前\u user.favorite\u指南有效且不插入任何内容

您可以发布日志中的
参数吗<代码>@guideline=guideline。通过_id(参数[:guideline_id])查找_all_;当前用户最喜爱的指南首先在浏览器上打开您的显示页面。然后使用命令
$>development.log
清除日志。下一步单击ur链接添加fav。然后打开文件
$vim development.log
。您可以看到参数。谢谢-将其更改为“按id查找”会给我一个“ActiveRecord::AssociationTypeMismatch in GuidelinesController#Favorite”-这与关系有关?将其更改为
查找时不应出现错误。错误是为了别的东西。是否可以使用完整跟踪粘贴精确错误。ActiveRecord::Guidelines中的AssociationTypeMismatch控制器#最喜爱的FavoriteGuideline(#70238325055960)应为,获得NilClass(#70238318357120)Rails.root:/Users/x/Projects/guidelines Application Trace | Framework Trace | Full Trace app/controllers/guidelines|u controller.rb:25:in'favorite'请求参数:{“"方法”=>“获取”,“真实性"令牌”=>“a1z9qajgajgsowekblqbiaq0fcoillwllo4u6malw8y4pk=,“类型”=>“收藏夹”,“格式”=>“23”}我收到了您的错误。这是因为
指南。find_by_id(params[:guidline_id])
返回
nil
current_user.Favorite_指南感谢您的坚持,现在我得到了:ActiveRecord::AssociationTypeMismatch in guidelines控制器#Favorite FavoriteGuidence(#70238325055960)预期的,获得的指南(#7023832473360)Rails.root:/Users/x/Projects/guidelines Application Trace | Framework Trace | Full Trace app/controllers/guidelines(控制器)controllers(控制器).rb:25"收藏"请求参数{{{"方法=>“获取”,“真实性(令牌=>“a1z9qajgqajgsowekblqbiaqeqe0fcoilllo4u4u6malw8
<%= link_to "favourite",   guidelines_favourite_path(guideline_id: guideline.id, type: "favourite"), method: "get" %>
<%= link_to "unfavourite", guidelines_favourite_path(guideline_id: guideline.id, type: "unfavourite"), method: "get" %>
 @guideline= Guideline.find_all_by_id(params[:guideline_id]) #=> []
 current_user.favourite_guidelines << [] #=> Valid and inserting nothing