【问题标题】:Adding Categories to my Articles in my Rails app (Small Help)在我的 Rails 应用程序中为我的文章添加类别(小帮助)
【发布时间】:2010-03-25 20:51:56
【问题描述】:

我目前正在为一个项目构建一个半小型的 ruby​​ 应用程序。我目前面临的问题如下:

我希望能够将文章放入类别中。我已经通过拥有两个模型来实现这一点。具有 category_id 外键的文章模型和具有类别名称的我的 Category 模型。具有 has_one 和 belogs_to 关系。 (我们假设您只能将一篇文章归入一个类别)。这是一段代码。

这是新方法,我创建一篇新文章并加载所有类别。

def new  
 @article = Article.new  
 @categories = Category.find(:all)  
end

当我尝试从组合框中获取类别以便将其与文章一起插入时,问题就出现了。

这是组合框代码:

f.select(:category_id,@categories)

这是创建方法:

def create  
  @category = Category.find(params[:id])  
  @article = @category.articles.new(params[:article])  

  if @article.save  
    flash[:notice] = "Article Submitted Sucessfully"  
    redirect_to user_path  
  else  
    render :action => 'new'  
  end  
end  

我相信当我尝试加载所选类别“@category = Category.find(params[:id])”时我遇到的问题出在这一行,因为每当我将这一行硬编码到

@category = Category.find(1)

完美运行

【问题讨论】:

    标签: ruby-on-rails find categories


    【解决方案1】:

    问题在于 f.select。第二个参数不会将选项列表的值设置为类别的 id。表单构建器的选择方法有点缺乏。我会这样做:

    <%= collection_select :article, :category_id, @categories, :id, :name, @article.category_id %>
    

    这应该会为控制器提供正确的值。

    然后在控制器中,可以替换:

    @category = Category.find(params[:id])  
    @article = @category.articles.new(params[:article])  
    

    @article = Article.new(params[:article])
    

    category_id 将来自参数并正确设置。

    【讨论】:

    • 出于某种原因,我在选择行上不断收到“未定义的方法`stringify_keys'”。 ://
    • 抱歉,从内存中读取并使用了错误的函数。我根据实际文档更正了我的答案。
    • 确实奏效了! :] 你的回答比我的好很多。 :) 只需将 select 替换为 就可以完美地工作,最后不需要那个对象
    猜你喜欢
    • 1970-01-01
    • 2013-09-05
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 2016-11-01
    相关资源
    最近更新 更多