2013-02-20 1 views
0

레일스를 처음 사용하고 첫 번째 벽을 칠했습니다. 지금까지는 Google에서 대답을 사용할 수있었습니다. 솔직하게 말하면 문제의 일부는 문제를 제대로 설명 할 수 없다는 것입니다.보기에 홀수 서식이있는 모든 열을 표시하는 레일스 선택 쿼리

show.html.erb 파일의 내 레일 선택 쿼리는 (1) 중복 레코드를 표시하고 (2) 일반 텍스트 대신 홀수 서식으로 데이터를 표시합니다. 완전히 설명하기 위해 아래의 모든 코드를 붙여 넣습니다.

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 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 Work < ActiveRecord::Base 
    attr_accessible :description, :work_name, :users_id 

    belongs_to :user 
end 

와 belongs_to 내 작품의 모델은, 사용자의 컨트롤러입니다 작동합니다

나는 has_many 사용자 모델을 내 사용자 show.html.erb보기에서 특정 사용자에게 속한 작품을 반복하고 싶습니다. 필자는 Rails 규칙을 따르기 위해 user_id 필드와 외래 키 관계를 설정했습니다. 루프가 사용자에게 속한 작업을 찾으면 work_name 필드를 표시하려고합니다.

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

그러나,이 볼 때 나는 웹 사이트에보고있어 출력/사용자/1/:

귀하의 .each 루프는 사용자 만 작업 객체를 통해 반복되지
[#<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>] 

답변

0

.

당신은 그냥 할 수 있어야 :

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

또한 당신이 컨트롤러 액션에 @work를 정의하고 있기 때문에 당신이 그것을 줄일 수

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

당신은 이미 작업 개체가 귀하의 처분. 나는 다른 것을 선택하려고하는 어떤 이유도 있다고 생각하지 않는다.

+0

완벽하게 작동했습니다. 정말 고맙습니다. 나는이 100 %를 이해할 수 있도록 질문을 따른다. 이 단순화 된 규칙은보기의 If 문에서도 올바르게 작동합니다. 나는 <% if @ user.works.any? %> ~ <% if @ works.any? %>와 데이터 출력이 같아 보입니다. – winston

+0

그래, 시나리오에서'@ user.works'와'@ works'는 같은 것입니다. –

관련 문제