だから私は、ユーザーが私のビューのリンクからレシピの配列をソートできるようにしようとしています:
<%= link_to "Score", recipes_sort_path, :order => 'score' %>
パラメータ「score」をコントローラーメソッド「sort」に送信します。これは次のようになります。
def sort
if (params[:order] == 'score')
@recipes.sort_by(&:score)
end
respond_to do |format|
format.html { redirect_to recipes_path }
format.json { render json: @recipe }
end
end
次の index メソッドにリダイレクトします。
def index
# If recipes already present, skip following
if (!@recipes)
if (params[:search] || params[:tag])
@recipes = Recipe.search(params[:search], params[:tag])
else
@recipes = Recipe.all
end
end
respond_to do |format|
format.html
format.json { render json: @recipe }
end
end
アイデアは、並べ替えられたリストを使用してインデックス ビューにリダイレクトされ、ビューをレンダリングするだけでした。エラーは発生しませんが、リンクをクリックするとページがリロードされますが、何も起こりません。
Recipe クラスは次のようになります。
class Recipe < ActiveRecord::Base
attr_accessible :instructions, :name, :slug, :score, :upvotes, :downvotes, :comments, :image
has_and_belongs_to_many :ingredients
has_and_belongs_to_many :tags
has_many :comments
belongs_to :user
delegate :name, :to => :user, :prefix => :user, :allow_nil => true
mount_uploader :image, ImageUploader
validates :name, :presence => true
def score
score = (self.upvotes - self.downvotes)
end
end
ここで何が間違っていますか?