Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails select查询在视图中显示具有奇数格式的所有列_Ruby On Rails_Ruby On Rails 3.2 - Fatal编程技术网

Ruby on rails Rails select查询在视图中显示具有奇数格式的所有列

Ruby on rails Rails select查询在视图中显示具有奇数格式的所有列,ruby-on-rails,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3.2,我是Rails新手,第一次碰壁。到目前为止,我已经能够使用谷歌来寻找答案。老实说,我认为问题的一部分是我无法正确解释这个问题 show.html.erb文件中的MyRails Select查询(1)显示重复记录,(2)以奇数格式而不是纯文本显示数据。我将粘贴下面的所有代码以充分说明 我有一个用户模型,它有很多功能 class User < ActiveRecord::Base # Include default devise modules. Others available are:

我是Rails新手,第一次碰壁。到目前为止,我已经能够使用谷歌来寻找答案。老实说,我认为问题的一部分是我无法正确解释这个问题

show.html.erb文件中的MyRails Select查询(1)显示重复记录,(2)以奇数格式而不是纯文本显示数据。我将粘贴下面的所有代码以充分说明

我有一个用户模型,它有很多功能

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable,
  # :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me, :first_name, :last_name, :works_attributes
  # attr_accessible :title, :body

  validates_presence_of :first_name, :last_name
  validates_uniqueness_of :first_name, :last_name, :email, :case_sensitive => false

  has_many :works
  accepts_nested_attributes_for :works
class用户false
你有很多作品吗
接受\u嵌套的\u属性\u for:works
这是我的工作模型,属于用户

class Work < ActiveRecord::Base
  attr_accessible :description, :work_name, :users_id

  belongs_to :user
end
课堂作业
这是用户控制器:

class UsersController < ApplicationController
  def index
    @users = User.all

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


end
  def show
    @user = User.find(params[:id])
    @works = @user.works.all
    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @user }
    end
  end
end
class UsersController@users}
结束
结束
def秀
@user=user.find(参数[:id])
@works=@user.works.all
回应待办事项|格式|
format.html#show.html.erb
format.xml{render:xml=>@user}
结束
结束
结束
在我的users show.html.erb视图中,我希望循环浏览属于特定用户的作品。我将外键关系设置为用户id字段,以遵循Rails惯例。当循环找到属于用户的工作时,我想显示“工作名称”字段

<% if @user.works.any? %>
                    <% @user.works.each do |user| %>
                   <%= @user.works(:select => 'work_name') %>
                  <% end %>
                <% end %>

“工作名称”)%%>
但是,这是我在查看/users/1/时在网站上看到的输出:

[#<Work id: 1, work_name: "WorkTest1", description: "I am the co-founder and CEO of WorkTest1, a website t...", created_at: "2013-02-12 00:33:19", updated_at: "2013-02-12 00:33:19", user_id: 1>, #<Work id: 2, work_name: "WorkTest2", description: "test", created_at: "2013-02-12 00:33:19", updated_at: "2013-02-12 00:33:19", user_id: 1>] [#<Work id: 1, work_name: "WorkTest1", description: "I am the co-founder and CEO of WorkTest1, a website t...", created_at: "2013-02-12 00:33:19", updated_at: "2013-02-12 00:33:19", user_id: 1>, #<Work id: 2, work_name: "WorkTest2", description: "test", created_at: "2013-02-12 00:33:19", updated_at: "2013-02-12 00:33:19", user_id: 1>]

您的。每个循环不是在用户上循环,而是在工作对象上循环

您应该能够做到:

<% @user.works.each do |work| %>
  <%= work.work_name %>
<% end %>

此外,由于您在控制器操作中定义@work,因此可以将其简化为:

<% @works.each do |work| %>
  <%= work.work_name %>
<% end %>


您已经可以使用工作对象。我认为没有任何理由尝试选择其他任何东西。

这非常有效!非常感谢你。跟进问题,让我100%理解。这个简化的约定也适用于视图中的If语句,对吗?我改为,数据输出似乎是一样的。是的,在您的场景中,
@user.works
@works
是一样的。