1

太难了!需要有关此 Rails 应用程序的帮助。

对于内容,每个人都可以使用索引和显示内容。内容可以在集合中,这些集合是私有的。

我通过设计设置了隐私,但我无法弄清楚如何将 content_id 连接到许多不同的 collection_id。流程将是:

点击首页内容

单击转到集合列表以可能将内容添加到

单击集合上的按钮以添加内容 [这是我一直卡住的地方]

当我点击一个集合时,我可以查看集合中的所有内容,如果我不再需要这些内容,我可以将其删除。

我已经查看了从 has_and_belongs_to_many 模型、嵌套表单等所有内容,但似乎没有任何内容通过 content_id。

另请注意,主视图是 home/index.html.erb。

    routes.rb
      resources :contents
      resources :collections
      resources :collections_contents

    collection model
      has_many :collections_contents, dependent: :destroy
      has_many :contents, :through => :collections_contents

    content model
      has_many :collections_contents
      has_many :collections, :through => :collections_contents

    collections_content model
      belongs_to :content
      belongs_to :collection


    Collection and content controllers are the normal scaffold.

    Collections_contents_controller

    def create
      @collection = current_collection
      content = Content.find(params[:content_id])
      @collections_content = @collection.collection_content.build
      @collections_content.content = content

    respond_to do |format|
    if @collections_content.save
       format.html { redirect_to @collections_content.collection, notice: 'Collections content was successfully created.' }
       format.json { render json: @collections_content, status: :created, location: @collections_content }
      else
        format.html { render action: "new" }
        format.json { render json: @collections_content.errors, status: :unprocessable_entity }
        end
      end
    end



    home/index.html.erb
<%  if user_signed_in? %>
  <table>
      <% @collections.each do |collection| %>
        <tr>
          <td><%= collection.name %></td>
          <td><%= collection.thumbnail %></td>
          <td><%= collection.content_number %></td>
          <td><%= link_to 'View Collection', collection %></td>
        </tr>
      <% end %>
  </table>
<% else %>
<% end %>

<%= link_to 'Create New Collection', new_collection_path %>
<table>
  <% @contents.each do |content| %>
    <tr>
      <td><%= content.title %></td>
      <td><%= content.short_description %></td>
      <td><%= content.published_date %></td>
      <td><%= content.image %></td>
      <td><%= link_to 'Read More', content %></td>
      <td><%= link_to 'Add Content to Collection', collections_path(content_id: content) %></td>
    </tr>
  <% end %>
</table>


    <% @collections.each do |collection| %>
      <tr>
       <td><%= collection.name %></td>
       <td><%= collection.thumbnail %></td>
       <td><%= collection.content_number %></td>
       <td><%= link_to 'Add to Collection' %></td>
     </tr>
4

1 回答 1

0

有一个关于如何正确执行此操作的 RailsCast:

http://railscasts.com/episodes/163-self-referential-association

希望它可以帮助那里的人!

于 2013-09-19T04:37:09.310 回答