【问题标题】:Rails 4.1 model associations. Controller and viewRails 4.1 模型关联。控制器和视图
【发布时间】:2014-09-11 17:10:31
【问题描述】:

我尝试自己学习 Rails。我使用脚手架和资源生成器创建了简单的应用程序。我创建了具有用户和文章模型的博客应用程序。一切都很好,直到我想显示在用户个人资料中关联的用户的文章。我相信控制器有问题。文章/节目也没有错。

用户模型:

class User < ActiveRecord::Base
    has_many :articles
end

文章型号:

class Article < ActiveRecord::Base
  belongs_to :user
end

用户控制器:

before_action :set_user, only: [:show, :edit, :update, :destroy]
def show
    @article = @user.articles.find(params[:user_id])

  end

文章控制器:

class ArticlesController < ApplicationController
    def new
        @user = User.find(params[:user_id])
        @article = @user.articles.new
    end
    def create
        @user = User.find(params[:user_id])
        @article = @user.articles.new(params.require(:article).permit!)
        if @article.save
            redirect_to user_article_path(:user_id)
        else 
            render :new
        end 
    end
    def show
        @user = User.find(params[:id])
        @article = @user.articles.find(params[:user_id])

    end

end

用户视图:

<p id="notice"><%= notice %></p>

<p>
  <strong>Username:</strong>
  <%= @user.username %>
</p>

<p>
  <strong>Email:</strong>
  <%= @user.email %>
</p>

<p>
  <strong>Password:</strong>
  <%= @user.password %>
</p>

<%= link_to 'Edit', edit_user_path(@user) %> |
<%= link_to 'Back', users_path %>
<%= link_to 'new article', new_user_article_path(@user) %><br>

<%= @article.title %><br>
<%= @article.body %>
<% end %>

路线:

Rails.application.routes.draw do


  resources :users do
    resources :articles
  end
end

【问题讨论】:

    标签: ruby-on-rails-4 model associations views render


    【解决方案1】:

    我的猜测是 user#show 是问题所在,在这种方法中你应该得到相应用户的所有文章,所以应该是

    @articles = @user.articles
    

    此外,如果您看不到任何文章,请在 rails 控制台中检查文章是否在数据库中,并且字段 user_id 是否不为零

    rails c
    Article.all
    

    【讨论】:

    • 感谢您的回复。我已经检查了分贝。数据库中没有零。我也像你一样管理控制器。但它不起作用。在模型关联中,很难配置。我有点困惑。
    • 模型没问题,在 Rails 控制台中检查它,只需选择一个 user = User.first (或最后一个)的用户,然后选择 user.articles,如果你得到一个空数组或文章用户没问题。
    • 也可以查看文章模型寻找用户,只要使用Article.first.user就可以得到对应的用户或者nil。
    • 感谢您的帮助。看起来我没有正确设置我的视图。现在它终于可以工作了。
    猜你喜欢
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多