2015-04-22 6 views
-2

Я могу опубликовать событие, но когда я выбираю пользователя для публикации, выпадающее меню показывает пустые места, где должен быть пользователь (название места). Я пробовал все, что мог придумать. Любые идеи очень приветствуются.приложение rails, отображающее пустое место у пользователей (место) Место

Я нахожусь на рельсах 4. Я также использую урок.

вот мои файлы:

show.html.erb:

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

<p> 
    <b>Name:</b> 
    <%= @gig.user.venue_name %> 
</p> 

<p> 
    <strong>Event:</strong> 
    <%= @gig.event %> 
</p> 

<p> 
    <strong>Date:</strong> 
    <%= @gig.date %> 
</p> 

<p> 
    <strong>Doors:</strong> 
    <%= @gig.doors %> 
</p> 

<p> 
    <strong>Showtime:</strong> 
    <%= @gig.showtime %> 
</p> 

<p> 
    <strong>Age:</strong> 
    <%= @gig.age %> 
</p> 

<p> 
    <strong>Price:</strong> 
    <%= @gig.price %> 
</p> 

<p> 
    <strong>Description:</strong> 
    <%= @gig.description %> 
</p> 

<%= link_to 'Edit', edit_gig_path(@gig) %> | 
<%= link_to 'Back', gigs_path %> 

index.html.erb:

<p id="notice"><%= notice %></p> 
<div class="page-header"> 
    <h1>All Gigs</h1> 
</div> 

<% @gigs.each do |gig| %> 
<div class="gig"> 
    <strong><%= gig.user.venue_name %></strong> 
    <p><%= gig.event %></p> 
    <p><%= gig.date %></p> 
    <p><%= gig.doors %></p> 
    <p><%= gig.showtime %></p> 
    <p><%= gig.age %></p> 
    <p><%= gig.price %></p> 
    <p><%= gig.description %></p> 
    <div class="meta"> 
     <%= link_to time_ago_in_words(gig.created_at) + " ago", gig %> 
     <span class="admin"> 
     | <%= link_to 'Edit', edit_gig_path(gig) %> | 
     <%= link_to 'Delete', gig, method: :delete, data: { confirm: 'Are you sure?' } %> 
     </span> 
    </div> 
</div> 
<% end %> 
    </tbody> 
</table> 

gig.rb:

class Gig < ActiveRecord::Base 
    belongs_to :user 
end 

user.rb:

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

has_many :gigs 

end 

_form.html.erb:

<%= simple_form_for(@gig, html: {class: "form-horizontal"}) do |f| %> 
    <% if @gig.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@gig.errors.count, "error") %> prohibited this gig from being saved:</h2> 

     <ul> 
     <% @gig.errors.full_messages.each do |message| %> 
     <li><%= message %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <%= f.input :user_id, collection: User.all, label_method: :venue_name %> 
    <%= f.input :event %> 
    <%= f.input :date %> 
    <%= f.input :doors %> 
    <%= f.input :showtime %> 
    <%= f.input :age %> 
    <%= f.input :price %> 
    <%= f.input :description %> 
    <div class="form-actions"> 
    <%= f.button :submit %> 
    </div> 

дб мигрирует добавить идентификатор пользователя к концерту

class AddUserIdToGigs < ActiveRecord::Migration 
    def change 
    add_column :gigs, :user_id, :integer 
    add_index :gigs, :user_id 
    remove_column :gigs, :name 
    end 
end 

gigs_controller. rb

class GigsController < ApplicationController 
    before_action :set_gig, only: [:show, :edit, :update, :destroy] 

    # GET /gigs 
    # GET /gigs.json 
    def index 
    @gigs = Gig.all 
    end 

    # GET /gigs/1 
    # GET /gigs/1.json 
    def show 
    end 

    # GET /gigs/new 
    def new 
    @gig = Gig.new 
    end 

    # GET /gigs/1/edit 
    def edit 
    end 

    # POST /gigs 
    # POST /gigs.json 
    def create 
    @gig = Gig.new(gig_params) 

    respond_to do |format| 
     if @gig.save 
     format.html { redirect_to @gig, notice: 'Gig was successfully created.' } 
     format.json { render :show, status: :created, location: @gig } 
     else 
     format.html { render :new } 
     format.json { render json: @gig.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    # PATCH/PUT /gigs/1 
    # PATCH/PUT /gigs/1.json 
    def update 
    respond_to do |format| 
     if @gig.update(gig_params) 
     format.html { redirect_to @gig, notice: 'Gig was successfully updated.' } 
     format.json { render :show, status: :ok, location: @gig } 
     else 
     format.html { render :edit } 
     format.json { render json: @gig.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    # DELETE /gigs/1 
    # DELETE /gigs/1.json 
    def destroy 
    @gig.destroy 
    respond_to do |format| 
     format.html { redirect_to gigs_url, notice: 'Gig was successfully destroyed.' } 
     format.json { head :no_content } 
    end 
    end 

    private 
    # Use callbacks to share common setup or constraints between actions. 
    def set_gig 
     @gig = Gig.find(params[:id]) 
    end 

    # Never trust parameters from the scary internet, only allow the white list through. 
    def gig_params 
     params.require(:gig).permit(:name, :event, :date, :doors, :showtime, :age, :price, :description, :user_id) 
    end 
end 
+0

Как выглядит ваш контроллер для индекса и шоу? Я также немного смущен, что вы имеете в виду как с почтой, так и с пользователем ... Вы используете Devise? Вам нужно немного больше информации, чтобы думать о решении. – user1572597

+0

Я использую devise, я установил его, когда пользователь/место подписывают, что они могут опубликовать концерт. все отображается, но user_id. –

+0

Я все еще не очень понятен в этом вопросе ... однако в методе show ничего нет ... например, @gig = Gig.find (: id => params [: id]) 'и что вы ищете, чтобы найти пользователей или объекты ... В любом случае вам понадобится что-то в строках '@venues = Venue.all' в методе контроллера, где бы вы ни называли это в * .html.erb – user1572597

ответ

0

решаемые его:

После запуска IRB, я заметил, что места было нулевым в БД. Поэтому я понял, что должен был создать свои заведения, создавая новые формы.

Смежные вопросы