我正在创建一个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
答案 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]