链接助手VS输入URL



奇怪的事情发生了,我不知道为什么。

当我使用辅助<%= link_to "New game", new_game_path %>时,我的new game form没有提交。

但是当我访问视图输入URL localhost:3000/games/new表单工作得很好

你知道怎么解决吗?

谢谢,

这里是我的rake路线

Prefix Verb   URI Pattern                               Controller#Action
                  root GET    /                                         games#index
         user_sessions GET    /user_sessions(.:format)                  user_sessions#index
                       POST   /user_sessions(.:format)                  user_sessions#create
      new_user_session GET    /user_sessions/new(.:format)              user_sessions#new
     edit_user_session GET    /user_sessions/:id/edit(.:format)         user_sessions#edit
          user_session GET    /user_sessions/:id(.:format)              user_sessions#show
                       PATCH  /user_sessions/:id(.:format)              user_sessions#update
                       PUT    /user_sessions/:id(.:format)              user_sessions#update
                       DELETE /user_sessions/:id(.:format)              user_sessions#destroy
                 users GET    /users(.:format)                          users#index
                       POST   /users(.:format)                          users#create
              new_user GET    /users/new(.:format)                      users#new
             edit_user GET    /users/:id/edit(.:format)                 users#edit
                  user GET    /users/:id(.:format)                      users#show
                       PATCH  /users/:id(.:format)                      users#update
                       PUT    /users/:id(.:format)                      users#update
                       DELETE /users/:id(.:format)                      users#destroy
 delete_progress_progresses POST   /progresses/delete_progress(.:format)     progresses#delete_progress
            progresses POST   /progresses(.:format)                     progresses#create
                search GET    /search(.:format)                         games#search
           game_levels GET    /games/:game_id/levels(.:format)          levels#index
                       POST   /games/:game_id/levels(.:format)          levels#create
        new_game_level GET    /games/:game_id/levels/new(.:format)      levels#new
       edit_game_level GET    /games/:game_id/levels/:id/edit(.:format) levels#edit
            game_level GET    /games/:game_id/levels/:id(.:format)      levels#show
                       PATCH  /games/:game_id/levels/:id(.:format)      levels#update
                       PUT    /games/:game_id/levels/:id(.:format)      levels#update
                       DELETE /games/:game_id/levels/:id(.:format)      levels#destroy
    insert_levels_game POST   /games/:id/insert_levels(.:format)        games#insert_levels
                 games GET    /games(.:format)                          games#index
                       POST   /games(.:format)                          games#create
              new_game GET    /games/new(.:format)                      games#new
             edit_game GET    /games/:id/edit(.:format)                 games#edit
                  game GET    /games/:id(.:format)                      games#show
                       PATCH  /games/:id(.:format)                      games#update
                       PUT    /games/:id(.:format)                      games#update
                       DELETE /games/:id(.:format)                      games#destroy
                 login GET    /login(.:format)                          user_sessions#new
                logout POST   /logout(.:format)                      user_sessions#destroy

我的路由文件

Rails.application.routes.draw do
 root :to => 'games#index'
  resources :user_sessions
  resources :users
  resources :progresses, :only => :create do 
    collection do
      post 'delete_progress'
    end
 end
 get 'search' => 'games#search'
  resources :games do
     resources :levels
     member do
      post 'insert_levels'
    end
  end
  get 'login' => 'user_sessions#new', :as => :login
  post 'logout' => 'user_sessions#destroy', :as => :logout
end

当然,您可以使用string作为相对URL。这将永远不会崩溃,因为rails不会试图解决您的路线构建它。我猜,你可能打错了什么字。

没有理由不这样做。我已经搜索了你的git应用程序的"new_game_path",但找不到一个例子,你使用这个代码。

我在你的布局中只发现了< a href="/games/new">New game</a>

将其替换为<%= link_to 'New Game', new_game_path %>,这在您的应用程序中有效。我刚刚测试了它。

如果您打算在某些时候使用国际化,则应该避免使用标准的HTML链接。它们不会使您的区域持久化。

form

你提到你的"表单不提交"

这不是你的link_to的问题-这是你的form的问题;这是两个不同的问题:

,

link_to

link_to带你到一个新的页面。这是一个帮助创建<a href="http://your_link.com">Your text</a>

等价物的辅助方法。

这意味着,如果你发送请求到你的new动作,它应该不重要如何用户到达那里-只有如何action呈现。

form的典型情况如下:

#app/views/games/new.html.erb
<%= form_for @game do |f| %>
   <%= f.text_field :attribute %>
   <%= f.submit "test" %>
<% end %>
#app/controllers/games_controller.rb
Class GamesController < ApplicationController
    def new
        @game = Game.new
    end
end

,

修复

当你提到你的新游戏表单没有提交时,这是你的表单本身的问题。这可能是由多种原因造成的,但通常与呈现表单

的方式有关。

要解决这个问题,你需要详细说明如何渲染你的表单&您希望它如何提交


阅读你更新的评论,如果表单工作时,你发送请求到"裸"url,问题可能不是与表单本身。

作为经验法则,在定义链接等时,您总是希望使用Rails helpers。在你的application layout中,我发现你发布了"纯"HTML来创建一个链接。这很糟糕,因为如果Rails语法改变了,或者你的路由改变了,你的应用程序将无法正确更新。

相关内容

  • 没有找到相关文章

最新更新