Post.Username не будет отображаться внутри хамла?

Хорошо, так что, наверное, очень простой вопрос, на который я, наверное, отвечу. Я, кажется, сломал функцию моего приложения, которая отображает имя пользователя, который отправил сообщение (в моем случае «pin»).

Все это произошло примерно в то время, когда я добавил имена пользователей в базу данных (разработал), так как ранее я только отображал адреса электронной почты и чувствовал, что это не совсем то, что я хотел.

Tl; dr: = pin.user.username (приложение / просмотров / контакты / index.html.haml) Не показывает имя пользователя, который отправил сообщение. Однако он будет отображать электронную почту с pin.user.email.

Вот мой PinsController (Pin в моем случае — это пост в разработке)

class PinsController < ApplicationController
before_action :find_pin, only: [:show, :edit, :update, :destroy, :upvote, :downvote]
before_action :authenticate_user!, except: [:index, :show]

attr_accessor :username

def index
@pins = Pin.all.order("created_at DESC")
end

def show
end

def new
@pin = current_user.pins.build
end

def create
@pin = current_user.pins.build(pin_params)

if @pin.save
redirect_to @pin, notice: "Fit was successfully created"else
render 'new'
end
end

def edit
end

def update
if @pin.update(pin_params)
redirect_to @pin, notice: "Fit was successfully updated"else
render 'edit'
end
end

def destroy
@pin.destroy
redirect_to root_path
end

def upvote
@pin.upvote_by current_user
redirect_to :back
end

private

def pin_params
params.require(:pin).permit(:title, :description, :image)
end

def find_pin
@pin = Pin.find(params[:id])
end

end

Вот мой index.html.haml

#pins.transitions-enabled
- @pins.each do |pin|
.box.panel.panel-default
= link_to (image_tag pin.image.url), pin
%h2= link_to pin.title, pin
%p.user
Submitted by
= pin.user.username

Моя схема показывает это для пользователей

  add_index "pins", ["user_id"], name: "index_pins_on_user_id"
create_table "users", force: true do |t|
t.string   "email",                  default: "", null: false
t.string   "encrypted_password",     default: "", null: false
t.string   "reset_password_token"t.datetime "reset_password_sent_at"t.datetime "remember_created_at"t.integer  "sign_in_count",          default: 0,  null: false
t.datetime "current_sign_in_at"t.datetime "last_sign_in_at"t.string   "current_sign_in_ip"t.string   "last_sign_in_ip"t.datetime "created_at"t.datetime "updated_at"t.string   "username"end

Я прикрепил мой мерзавец, только если вам нужны конкретные детали
https://github.com/thgilartlU/MyFitIdentity

0

Решение

Удалить

attr_accessor :username

def username=(username)
@username = username
end

от твоего user.rb файл модели, он портит ActiveRecord

0

Другие решения

Ваша проблема не в том, что хамл, а в том, что имя пользователя, которое вы пытаетесь отобразить, кажется пустым. Ваша структура haml выглядит просто отлично.
Как уже упоминалось в вашем pin_params не разрешено username, поэтому не забудьте разрешить и сохранить его в БД. Чем ваш хамл должен работать.

0

По вопросам рекламы [email protected]