Ruby on rails 未定义的方法“stringify#u键';对于型号';s显示页面
在尝试访问我的一个型号Ruby on rails 未定义的方法“stringify#u键';对于型号';s显示页面,ruby-on-rails,Ruby On Rails,在尝试访问我的一个型号训练#show的show视图时,我遇到了一个错误,显示: undefined method `stringify_keys' for "/workouts/abs-0002":String 它在\u template.html.erb中的链接上调用它,该链接在我的训练#显示页面中呈现(第一行调用错误): 我的锻炼.rb型号是: class Workout < ActiveRecord::Base extend FriendlyId friendly_id :
训练#show
的show视图时,我遇到了一个错误,显示:
undefined method `stringify_keys' for "/workouts/abs-0002":String
它在\u template.html.erb
中的链接上调用它,该链接在我的训练#显示
页面中呈现(第一行调用错误):
我的锻炼.rb
型号是:
class Workout < ActiveRecord::Base
extend FriendlyId
friendly_id :name, use: :slugged
belongs_to :user
has_many :exercises
has_many :reports
validates :user, presence: true
end
课堂训练
有人能帮我看看这里出了什么问题吗?根据,如果要为链接使用自定义名称,需要删除第一个参数:
如果链接目标很难放入name参数,也可以使用块。雇员再培训局例子:
——看看吧!
# =>
漂亮!非常感谢。
class WorkoutsController < ApplicationController
def index
@workouts = Workout.all
end
def show
@workout = Workout.friendly.find(params[:id])
@exercise = Exercise.new
@report = Report.new
end
def new
@workout = Workout.new
@workout.user_id = current_user
end
def create
@workout = Workout.new(workout_params)
@workout.user = current_user
if @workout.save
flash[:notice] = "Workout was saved successfully."
redirect_to @workout
else
flash.now[:alert] = "Error creating workout. Please try again."
render :new
end
end
def edit
@workout = Workout.friendly.find(params[:id])
@workout.user_id = current_user
end
def update
@workout = Workout.friendly.find(params[:id])
@workout.name = params[:workout][:name]
@workout.workout_type = params[:workout][:workout_type]
@workout.teaser = params[:workout][:teaser]
@workout.description = params[:workout][:description]
@workout.video = params[:workout][:video]
@workout.difficulty = params[:workout][:difficulty]
@workout.trainer = params[:workout][:trainer]
@workout.user_id = params[:workout][:user_id]
if @workout.save
flash[:notice] = "Workout was updated successfully."
redirect_to @workout
else
flash.now[:alert] = "Error saving workout. Please try again."
render :edit
end
end
def destroy
@workout = Workout.friendly.find(params[:id])
if @workout.destroy
flash[:notice] = "\"#{@workout.name}\" was deleted successfully."
redirect_to action: :index
else
flash.now[:alert] = "There was an error deleting the workout."
render :show
end
end
private
def workout_params
params.require(:workout).permit(:name, :workout_type, :teaser, :description, :video, :difficulty, :trainer, :user_id)
end
end
class Workout < ActiveRecord::Base
extend FriendlyId
friendly_id :name, use: :slugged
belongs_to :user
has_many :exercises
has_many :reports
validates :user, presence: true
end
<%= link_to(@profile) do %>
<strong><%= @profile.name %></strong> -- <span>Check it out!</span>
<% end %>
# =>
<a href="/profiles/1">
<strong>David</strong> -- <span>Check it out!</span>
</a>