1

私は Rails についてあまり詳しくありませんが、このプロジェクトを継承しています。ここ数日、私は「link_to」と「routes.rb」について頭を悩ませてきました。このようなものは私を怒らせています-私は一日中それを見て、コードのビットを裸のプロジェクトに貼り付けて動作させました..それを解決することについてなので、何かアイデアがあれば....

私のページ _signed_in_header.html.erb には次のものがあります。

<a href="../staticpages/faq">FAQ</a>

私のroutes.rbには次のものがあります:

get "staticpages/faq"

サンプル プロジェクトをゼロから開始すると機能するため、これが正しく設定されていることはわかっています。

しかし、私が継承したこの特定のプロジェクトでは、エラーが発生します:

NoMethodError in Staticpages#faq

Showing /home/christophecompaq/Populisto/app/views/layouts/_signed_in_header.html.erb    where line #48 raised:

undefined method `model_name' for NilClass:Class
Extracted source (around line #48):

45: 
46:       <div class='search-box'>
47:       <%= simple_form_for @review, :url => search_index_path, :method => :post,   :html => { :class => 'form-horizontal'} do |f| %>
48: 
49:         <%= f.input :search_ids, :collection => @data, :as => :grouped_chosen, 
50:                     :group_method => :last, :prompt => false,
51:                     :input_html => { :class => 'span5', :multiple => true }, 
Trace of template inclusion: app/views/layouts/_header.html.erb,     app/views/layouts/application.html.erb

Rails.root: /home/christophecompaq/Populisto

Application Trace | Framework Trace | Full Trace
app/views/layouts/_signed_in_header.html.erb:48:in  `_app_views_layouts__signed_in_header_html_erb___586079249_69970641688720'
app/views/layouts/_header.html.erb:1:in  `_app_views_layouts__header_html_erb__1905506502_69970640142220'
app/views/layouts/application.html.erb:21:in  `_app_views_layouts_application_html_erb___1868096314_69970642536740'

編集: レビュー コントローラーのコードを表示するように求められたので、以下に示します。

class ReviewsController < FrontEndController
respond_to :html, :json

before_filter :with_google_maps_api

def index
@review = Review.new
end

def create
@review = Review.create((params[:review] || {}).merge(:user_id => current_user.id))
if @review.save
  redirect_to landing_page, :notice =>    I18n.t('write_review.review_successfully_created')
else
  render :action => :index
end
end

def show
@review = Review.find(params[:id])
end

def edit
@review = Review.find(params[:id])
end

def update
@review = Review.find(params[:id])
if @review.update_attributes(params[:review])

else
  render :edit
end
end

def destroy
@review = Review.find(params[:id])
@review.destroy
end

def repost
@review = Review.find(params[:id])
@review.repost(current_user)
end

def reject
@review = Review.find(params[:id])
current_user.reject @review
end

end

とにかく、何が間違っているのか考えがあれば、喜んでお知らせします....ありがとう。

クリストフ。

4

3 に答える 3

5

ルートファイルで、このコードを使用します

get "staticpages/faq", :as => 'faq_page'

'as'は2つのヘルパー関数を生成します:faq_page_urlそしてfaq_page_pathそれはあなたのコードで使用することができます

于 2013-03-20T22:42:12.750 に答える
2

これが役立つことを願っています。同じ問題があると思いますが、これを使用してこれを修正できました:

私のroutes.rbで

match 'pages/:action', :controller => "pages"

そして私の見解では:

= link_to "About", {:controller => 'pages', :action => 'about'}
于 2013-08-07T12:07:59.533 に答える