Star Mark作为喜爱的书籍,Ruby on Rails

时间:2015-07-19 13:47:00

标签: ruby-on-rails model-view-controller

我正在创建一个Ruby on Rails应用程序,其中向用户显示一个书籍列表,每个书籍旁边都有一个星号(这部分我已经失败了)。我希望我的用户能够点击页面上的一个或多个星标,以便将一本或多本书籍保存为收藏夹。

我正在寻找我是否在正确的轨道/如果我应该以不同的方式这样做。

我也知道我在视图中需要JavaScript,而且我仍在努力解决这个问题。

型号:

Sub GetTitles()
Dim oSld as Slide
Dim oShp as Shape
Dim myText as String
For Each oSld in ActivePresentation.Slides
For Each oShp in oSld.Shapes
If oShp.Left=X and oShp.Top=Y Then
my Text=oShp.TextFrame.TextRange.Text
Debug.Print myText
End If
Next
Next
End Sub

控制器

class Book < ActiveRecord::Base  
  has_many :favorites
  has_many :users, through: :favorites
end

class User < ActiveRecord::Base
  has_many :favorites
  has_many :books, through: :favourites
end

class Favorite < ActiveRecord::Base
  belongs_to :book
  belongs_to :user
end

路线

class FavoriteController < ActionController::Base
  def create
    current_user.favorites.create(:book_id => params[:book_id])
    render :layout => false
  end
end

1 个答案:

答案 0 :(得分:0)

这看起来很合理。这里有可能创建重复记录。您可能希望添加类似的内容以避免记录重复:

class Favorite < ActiveRecord::Base belongs_to :book belongs_to :user validates_uniqueness_of :book_id, scope: :user_id end

根据您使用的Rails版本,您可能在匹配路径上遇到问题 - 在Rails 4附近,这些开始需要使用via的合格数组方法类型。

因此,对于最新版本的Rails,您需要指定方法,例如get&#39; favorite /:book_id&#39; =&GT; &#39;收藏夹#create&#39;,as :: favorite,或match&#39; favorite /:book_id&#39; =&GT; &#39;收藏夹#create&#39;,as :: favorite,via:[:get,:post]