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>