Я могу опубликовать событие, но когда я выбираю пользователя для публикации, выпадающее меню показывает пустые места, где должен быть пользователь (название места). Я пробовал все, что мог придумать. Любые идеи очень приветствуются.приложение 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
Как выглядит ваш контроллер для индекса и шоу? Я также немного смущен, что вы имеете в виду как с почтой, так и с пользователем ... Вы используете Devise? Вам нужно немного больше информации, чтобы думать о решении. – user1572597
Я использую devise, я установил его, когда пользователь/место подписывают, что они могут опубликовать концерт. все отображается, но user_id. –
Я все еще не очень понятен в этом вопросе ... однако в методе show ничего нет ... например, @gig = Gig.find (: id => params [: id]) 'и что вы ищете, чтобы найти пользователей или объекты ... В любом случае вам понадобится что-то в строках '@venues = Venue.all' в методе контроллера, где бы вы ни называли это в * .html.erb – user1572597