在我的Rails应用程序中为我的文章添加类别(小帮助)

时间:2010-03-25 20:51:56

标签: ruby-on-rails find categories

我目前正在为一个项目构建一个半小的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)

完美无缺

1 个答案:

答案 0 :(得分:2)

问题在于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将来自参数并正确设置。