Я получаю Нет маршрутов соответствует {: action => "new",: controller => "posts"}, хотя его нет в моем файле rout.rbПОМОГИТЕ? - PullRequest
2 голосов
/ 28 августа 2011

ОК, так что это мой первый вопрос, размещенный в stackoverflow.Я довольно новичок в программировании, изучаю Ruby on Rails последние 3 месяца.Может быть несколько вещей не так с моим кодом, но здесь это идет.

По сути, я пытаюсь получить пользователя для публикации.Я использую Devise для регистрации, и все это работает.Но когда я создаю ссылку на «Создать сообщение» в своем представлении заголовка, он говорит мне, что у меня нет сопоставления маршрута =>, хотя я думаю, что он существует.Я упускаю что-то маленькое, я верю, но во всей отладке, которую я сделал, чтобы попытаться сделать это правильно, я думаю, что я мог испортить что-то еще по пути.Ниже прилагается мой код для router.rb, мой файл post_controller и мой файл представления макета.Извините за все это, я не мог быть очень кратким.Кто-нибудь видит что-то не так?Сообщите мне, если вам нужен другой код

_header.html.erb

    <% if user_signed_in? %>
    Signed in as <%= current_user.username %>. Not you?
    <%= link_to "Logout", destroy_user_session_path, :method => :delete, %>
    <%= link_to "Create Post", new_user_post_path %>
    <%= link_to "Search", posts_index_path %>
    <%= link_to "Show All", posts_show_path %>

rout.rb

  #devise_for :users 
  devise_for :users do get '/users/sign_out' => 'devise/sessions#destroy' end

  match '/users/:user_id/posts/new',  :to => 'posts#new'

  resources :users do
   resources :posts, :only => [:new, :create, :show, :index, :destroy]
  end

  match '/contact', :to => 'pages#contact'
  match '/about',   :to => 'pages#about'
  match '/help',    :to => 'pages#help'
  match '/safety',  :to => 'pages#safety'
   match '/privacy', :to => 'pages#privacy'

  get 'posts/index'
  get 'posts/show'
  get 'posts/post'

  match 'posts/search',   :to => 'posts#search'

  root :to => 'pages#home'

posts_controller

  def create
if signed_in?
  @user = current_user.posts.build(params[:user][:post])
  if @user.save
    flash[:success] = "Thanks for creating your post! " +
    redirect_to new_user_post_path(@post)
  else
    render 'new'

  def new   
   @title = "Create Post"
   @post = Post.new
  end

рейковые маршруты

  users_sign_out GET    /users/sign_out(.:format)           {:controller=>"devise/sessions",         :action=>"destroy"}
    new_user_session GET    /users/sign_in(.:format)            {:action=>"new", :controller=>"devise/sessions"}
        user_session POST   /users/sign_in(.:format)            {:action=>"create", :controller=>"devise/sessions"}
destroy_user_session DELETE /users/sign_out(.:format)           {:action=>"destroy", :controller=>"devise/sessions"}
       user_password POST   /users/password(.:format)           {:action=>"create", :controller=>"devise/passwords"}
   new_user_password GET    /users/password/new(.:format)       {:action=>"new", :controller=>"devise/passwords"}
  edit_user_password GET    /users/password/edit(.:format)      {:action=>"edit", :controller=>"devise/passwords"}
                     PUT    /users/password(.:format)           {:action=>"update", :controller=>"devise/passwords"}
     cancel_user_registration GET    /users/cancel(.:format)             {:action=>"cancel",    :controller=>"devise/registrations"}
     user_registration POST   /users(.:format)                    {:action=>"create", :controller=>"devise/registrations"}
     new_user_registration GET    /users/sign_up(.:format)            {:action=>"new", :controller=>"devise/registrations"}
     edit_user_registration GET    /users/edit(.:format)               {:action=>"edit", :controller=>"devise/registrations"}
                     PUT    /users(.:format)                    {:action=>"update", :controller=>"devise/registrations"}
                     DELETE /users(.:format)                    {:action=>"destroy", :controller=>"devise/registrations"}
                            /users/:user_id/posts/new(.:format) {:controller=>"posts", :action=>"new"}
          user_posts GET    /users/:user_id/posts(.:format)     {:action=>"index", :controller=>"posts"}
                     POST   /users/:user_id/posts(.:format)     {:action=>"create", :controller=>"posts"}
       new_user_post GET    /users/:user_id/posts/new(.:format) {:action=>"new", :controller=>"posts"}
           user_post GET    /users/:user_id/posts/:id(.:format) {:action=>"show", :controller=>"posts"}
                     DELETE /users/:user_id/posts/:id(.:format) {:action=>"destroy", :controller=>"posts"}
               users GET    /users(.:format)                    {:action=>"index", :controller=>"users"}
                     POST   /users(.:format)                    {:action=>"create", :controller=>"users"}
            new_user GET    /users/new(.:format)                {:action=>"new", :controller=>"users"}
           edit_user GET    /users/:id/edit(.:format)           {:action=>"edit", :controller=>"users"}
                user GET    /users/:id(.:format)                {:action=>"show", :controller=>"users"}
                     PUT    /users/:id(.:format)                {:action=>"update", :controller=>"users"}
                     DELETE /users/:id(.:format)                {:action=>"destroy", :controller=>"users"}
             contact        /contact(.:format)                  {:controller=>"pages", :action=>"contact"}
               about        /about(.:format)                    {:controller=>"pages", :action=>"about"}
                help        /help(.:format)                     {:controller=>"pages", :action=>"help"}
              safety        /safety(.:format)                   {:controller=>"pages", :action=>"safety"}
             privacy        /privacy(.:format)                  {:controller=>"pages", :action=>"privacy"}
         posts_index GET    /posts/index(.:format)              {:controller=>"posts", :action=>"index"}
          posts_show GET    /posts/show(.:format)               {:controller=>"posts", :action=>"show"}
          posts_post GET    /posts/post(.:format)               {:controller=>"posts", :action=>"post"}
        posts_search        /posts/search(.:format)             {:controller=>"posts", :action=>"search"}
                root        /(.:format)                         {:controller=>"pages", :action=>"home"}

Ответы [ 3 ]

1 голос
/ 28 августа 2011

Это должно было быть

<%= link_to "Create Post", new_user_post_path(current_user) %>
1 голос
/ 28 августа 2011

Попробуйте набрать rake routes в консоли и проверьте, существует ли искомый маршрут.Обратите внимание, что порядок также имеет значение.

0 голосов
/ 28 августа 2011

Я думаю, это из-за аргумента!В вашем файле маршрутов, кажется, вы передаете: user_id также.В вашей ссылке попробуйте передать этот идентификатор.Надеюсь, это поможет ...

<% = link_to "создать сообщение", new_user_post_path (current_user.id)%>

Также я бы предложил переименовать путь и использовать егоЯ знаю, что это не правильно, но все же.Я столкнулся с подобной проблемой и решил, сделав это !!;)

Надеюсь, это поможет!

...