2016-06-01 65 views
1

在試圖訪問演出鑑於我的模型workouts#show之一,我一直得到一個錯誤,指出:未定義的方法`stringify_keys'型號的顯示頁面

undefined method `stringify_keys' for "/workouts/abs-0002":String 

它調用它的鏈接在_template.html.erb ,正在呈現在我的workouts#show頁(誤差稱爲第一行):

<%= link_to "Do this one!", workout_path(workout) do %> 
    <p class="cta">Pick me!</p> 
    <% end %> 

workouts控制器:

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 

而且我workout.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 

誰能幫我看看是怎麼回事錯在這裏?

回答

2

根據http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to,你需要刪除的第一個參數,如果你想使用自定義名稱的鏈接:

可以使用塊,以及如果您的鏈接目標是很難融入名稱參數。 ERB例如:

<%= 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> 
+0

漂亮!謝謝! – Liz