首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActionController::Search#search中的UrlGenerationError

ActionController::Search#search中的UrlGenerationError
EN

Stack Overflow用户
提问于 2015-01-08 23:12:40
回答 1查看 139关注 0票数 0

我已经安装了ElasticSearch,当我使用以下内容时,我无法搜索:

代码语言:javascript
复制
<%= link_to genre_linker.genre, movie_genre_linker_path(@movie, genre_linker) %>

但是,当我使用以下命令时,结果将正确显示:

代码语言:javascript
复制
<%= link_to genre_linker.genre %>

因此,由于搜索工作,我认为问题在于我的语法。

这是我的路线:

代码语言:javascript
复制
movie_genre_linker GET    /movies/:movie_id/genre_linkers/:id(.:format)         genre_linkers#show 

这是错误消息:

我仍然是个菜鸟,所以任何的指导都会受到极大的感谢。

movies_controller.rb

代码语言:javascript
复制
class MoviesController < ApplicationController
  before_action :set_movie, only: [:show, :edit, :update, :destroy]
  before_action :authenticate_user!, except: [:index, :show]


  def index
    @movies = Movie.all
  end


  def show
    @genre_linkers = GenreLinker.where(movie_id: @movie.id).order("created_at DESC")
     @common_linkers = CommonLinker.where(movie_id: @movie.id).order("created_at DESC")
    @theme_linkers = ThemeLinker.where(movie_id: @movie.id).order("created_at DESC")
     @location_linkers = LocationLinker.where(movie_id: @movie.id).order("created_at DESC")
  end


  def new
     @movie = current_user.movies.build
  end


  def edit
  end

  def create
    @movie = current_user.movies.build(movie_params)

    respond_to do |format|
      if @movie.save
        format.html { redirect_to @movie, notice: 'Movie was successfully created.' }
        format.json { render :show, status: :created, location: @movie }
      else
        format.html { render :new }
        format.json { render json: @movie.errors, status: :unprocessable_entity }
      end
    end
  end


  def update
    respond_to do |format|
      if @movie.update(movie_params)
        format.html { redirect_to @movie, notice: 'Movie was successfully updated.' }
        format.json { render :show, status: :ok, location: @movie }
      else
        format.html { render :edit }
        format.json { render json: @movie.errors, status: :unprocessable_entity }
      end
    end
  end

  def destroy
    @movie.destroy
    respond_to do |format|
      format.html { redirect_to movies_url, notice: 'Movie was successfully destroyed.' }
      format.json { head :no_content }
    end
  end

  private

    def set_movie
      @movie = Movie.find(params[:id])
    end

    def movie_params
       params.require(:movie).permit(:title, :description, :movie_length, :poster)
    end
end

genre_linkers_controller.rb

代码语言:javascript
复制
class GenreLinkersController < ApplicationController
  before_action :set_genre_linker, only: [:show, :edit, :update, :destroy, :votes]
  before_action :set_movie
  before_action :authenticate_user!, except: [:index, :show]
  respond_to :html

  def index
    @genre_linkers = GenreLinker.all
    respond_with(@genre_linkers)
  end

  def show
    @genre_linker = GenreLinker.find(params[:id])
  end

   def vote
      value = params[:type] == "up" ? 1 : -1
      @genre_linker = GenreLinker.find(params[:id])
     @genre_linker.add_or_update_evaluation(:votes, value, current_user)
      redirect_to :back, notice: "thanks for the vote"
   end


  def new
    @genre_linker = GenreLinker.new
    respond_with(@genre_linker)
  end

  def edit
  end

  def create
     @genre_linker = GenreLinker.new(genre_linker_params)
     @genre_linker.user_id = current_user.id
     @genre_linker.movie_id = @movie.id

     if @genre_linker.save
        redirect_to @movie
    else
      render 'new'
    end
  end

  def update
    @genre_linker.update(genre_linker_params)
    respond_with(@genre_linker)
  end

  def destroy
    @genre_linker.destroy
    respond_with(@genre_linker)
  end

  private
    def set_genre_linker
      @genre_linker = GenreLinker.find(params[:id])
    end

   def set_movie
      @movie = Movie.find(params[:movie_id])
   end

    def genre_linker_params
       params.require(:genre_linker).permit(:genre, :description)
    end
end

search/search.html.erb

代码语言:javascript
复制
<%= form_for search_path, method: :get do |f| %>
  <p>
    <%= f.label "Search for" %>
    <%= text_field_tag :q, params[:q] %>
    <%= submit_tag "Go", name: nil %>
  </p>
<% end %>

<ul>
  <% @genre_linkers.each do |genre_linker| %>
    <li>
      <%= link_to genre_linker.genre, movie_genre_linker_path(@movie, genre_linker) %>


    </li>

</ul
    <% end %>

search_controller.rb

代码语言:javascript
复制
class SearchController < ApplicationController
  def search
  if params[:q].nil?
    @genre_linkers = []
  else
    @genre_linkers = GenreLinker.search params[:q]
  end
end

end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-19 20:45:15

这起作用了:<%= link_to genre_linker.genre, movie_path(genre_linker.movie.id) %>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27851256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档