【问题标题】:Rails model create functionRails 模型创建函数
【发布时间】:2011-11-04 20:00:53
【问题描述】:

我使用嵌套模型 gem 创建了一个可以带标签的图片。现在我已经为我的模型图片添加了一个属性,所以它有一个属性标签列表。当我创建一个新标签时,我希望发生这种情况

class TagsController < ApplicationController
  def create
    @tag = Tag.new(params[:id])
    if @tag.save
      taglist = picture.taglist
      taglist+=@tag.tagcontent
      @tag.picture.update_attributes(:taglist => taglist)
    end
  end
end

在我的路线中

resources :pictures do
   resources :tags
end

当我创建一个新标签时,taglist 属性中什么也没发生,就像什么也没发生一样,为什么?

【问题讨论】:

  • 图片定义了吗?你遇到了什么错误?
  • @Stephanie 是的,它已定义(我已关联它们),没有错误显示,只是没有任何反应
  • 嗯,你确定params[:id]?不应该是params[:tag]吗?

标签: ruby-on-rails ruby-on-rails-3 attributes routes


【解决方案1】:

由于缺乏信息,很难提供帮助,但我发现了两个可能的问题:

  1. Tag.new(params[:id]) 没有意义。假设 Tag 继承自 ActiveRecord::Base,您需要向其传递属性哈希(例如 Tag.new(:name =&gt; 'mytag'))由于验证错误,您可能根本不会进入 if @tag.save 块。此外,您不需要为要创建的对象提供 id。数据库选择id。

  2. 在块内部,picture 在第一行未定义。

为什么不尝试使用类似的东西进行调试:

if @tag.save
  taglist = picture.taglist
  taglist+=@tag.tagcontent
  @tag.picture.update_attributes(:taglist => taglist)
else
  p "ERRORS:"
  p @tag.errors.full_messages
end

查看打印到控制台的错误。

【讨论】:

    【解决方案2】:

    我绝对认为该图片可能在控制器的create 方法中未定义。您能向我们展示一下您用来创建新标签的视图吗?是否有一个表单字段,您可以通过该字段选择哪张照片获取标签?

    请向我们展示关联和您对创建新标签的看法。

    实际上,我真正推荐的是使用:

    Agile Web Development 的 acts_as_taggable_on_steroids

    这是一个让标记变得容易的优秀插件;它内置了很多漂亮的功能,包括搜索、标签云等。我们在项目中使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多