0

我正在使用acts-as-taggable-on,并且没有任何运气一直试图弄清楚这一点。出于某种原因,我无法让我的标签显示或保存在数据库中。我真的需要一些帮助,我在网上查看了文档,文档是中级的,或者对新手不友好。这是我的代码:

设计用户模型:

class User < ActiveRecord::Base

  has_many :products, :dependent => :destroy
  acts_as_tagger
end

产品型号:

class Product < ActiveRecord::Base
    attr_accessible :name, :date, :price, :tag_list

    acts_as_taggable_on :tags

    belongs_to :user
end

形式:

  <div class="field"> 
    <%= f.label :tag_list %>
    <%= f.text_field :tag_list %>
  </div>

显示视图:

<p>
    <b>Tags:</b> 
    <%= @product.tag_list %>     
</p>

使用更新和工作代码进行编辑:

我正在使用设计并只让current_user(产品表中的 user_id)执行创建、销毁、更新标签等操作。

用户模型:

class User < ActiveRecord::Base 
  has_many :products,        :dependent => :destroy
  acts_as_tagger
end

产品型号:

class Product < ActiveRecord::Base
    attr_accessible :name, :date, :price, :tag_list, :longitude, :latitude

    acts_as_taggable_on :tags
end

产品控制器:

class ProductsController < ApplicationController
  before_filter :authenticate_user!

  def index
    @products = Product.all

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @products }
    end
  end

  def show
    @product = Product.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @product }
    end
  end

  def new
   @product = Product.new

    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @product }
    end
  end

  def edit
    @product = current_user.products.find(params[:id])

    @product.user = current_user
  end

  def create
    @product = current_user.products.build(params[:product])
    @product.user = current_user

    respond_to do |format|
      if @product.save
        format.html { redirect_to(@product, :notice => 'Product was successfully created.') }
        format.xml  { render :xml => @product, :status => :created, :location => @product }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @product.errors, :status => :unprocessable_entity }
      end
    end
  end

  def update
    @product = current_user.products.find(params[:id])
    @product.user = current_user

    respond_to do |format|
      if @product.update_attributes(params[:product])
        format.html { redirect_to(@product, :notice => 'Product was successfully updated.') }
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @product.errors, :status => :unprocessable_entity }
      end
    end
  end

  def destroy
    @product = current_user.products.find(params[:id])
    @product.destroy

    respond_to do |format|
      format.html { redirect_to(products_url) }
      format.xml  { head :ok }
    end
  end
end

产品/index.html.erb:

<td><%= product.tag_list %></td>

产品/show.html.erb:

<p>
    <b>Tags:</b> 
    <%= @product.tag_list %>     
</p>
4

2 回答 2

1

尝试在您的视图中使用此代码:

<p>
    <b>Tags:</b> 
    <%= @product.tags %>     
</p>
于 2011-06-18T04:39:44.170 回答
1

我遇到了类似的事情。我没有将 :tag_list 添加到我的 events_controller 中(我正在为我的青年组制作一个简单的聚会克隆)-

private
        def event_params
            params.require(:event).permit(:title, :text, :user_id, :event_start, :time_begin, :location, :address, **:tag_list**)
        end
end

没有抛出任何其他错误,幸运的是我也想到了这一点。

于 2014-04-03T04:08:09.463 回答