Ruby on rails 3 rails 3中的@story=story.find(params[:story_id])有问题

Ruby on rails 3 rails 3中的@story=story.find(params[:story_id])有问题,ruby-on-rails-3,Ruby On Rails 3,我有一个最近升级到rails 3的应用程序 在我的评论中,我有 def create @cuser = @current_user @story = Story.find(params[:story_id]) @story.comments.create(:user_id => @cuser.login,:body => params[:comment][:body]) respond_to do |format| format.html { stor

我有一个最近升级到rails 3的应用程序

在我的评论中,我有

def create
  @cuser = @current_user   
  @story = Story.find(params[:story_id]) 
  @story.comments.create(:user_id => @cuser.login,:body => params[:comment][:body])
  respond_to do |format|
    format.html { story_path}
    format.js
  end
end
story.rb中
我有
有很多评论
comment.rb中
我有
属于:故事

当我试图创建一个评论时,我得到一个

Couldn't find Story without an ID

这曾经奏效。你知道为什么它不再存在了吗?还有什么会影响它?可能是路由问题吗?

是的,可能是路由问题。你可能已经发现路由dsl已经改变了,我猜你是在胡闹。看起来你以前有一条类似的路线

`地图资源:故事

你已经(也许)用类似的东西代替了它

    resources :stories do 
      resources :comments do
        collection  do
          post :create
        end 
      end  
    end
我只是在猜测,但我认为这会给你带来你所看到的那种错误——你需要一条像这样的路线

resources :stories do
  resources :comments
end
这将自动生成创建管线,或者如果您希望更精确地指定它

resources :stories do
  resources :comments do
    member do
      post :create
    end
  end
end

是的,这可能是一个路由问题。你可能已经发现路由dsl已经改变了,我猜你是在胡闹。看起来你以前有一条类似的路线

`地图资源:故事

你已经(也许)用类似的东西代替了它

    resources :stories do 
      resources :comments do
        collection  do
          post :create
        end 
      end  
    end
我只是在猜测,但我认为这会给你带来你所看到的那种错误——你需要一条像这样的路线

resources :stories do
  resources :comments
end
这将自动生成创建管线,或者如果您希望更精确地指定它

resources :stories do
  resources :comments do
    member do
      post :create
    end
  end
end

我假设您具有以下路由配置:

resources :stories do
  resources :comments
end
如果是这种情况,则必须使用
params[:story\u id]

@story = Story.find(params[:story_id]) 

我假设您具有以下路由配置:

resources :stories do
  resources :comments
end
如果是这种情况,则必须使用
params[:story\u id]

@story = Story.find(params[:story_id]) 

您的表单定义应如下所示:

<%= form_for [@story, Comment.new] do |form| %> 
  <div id="body"> 
    <%= form.text_field :body %> 
  </div> <% form.hidden_field :user_id, :value => @current_user.login %> 
  <p>
    <%= submit_tag 'Comment' %>
  </p> 
<% end %>
Telling_tales::Application.routes.draw do 

  resource :session 
  resource :stories #really can't see why you need a singular route here 
  resource :user 
  resources :users do
    get 'register' => 'create', :on => :collection #maps to 'users#create'
  end

  resources :stories do 
    resources :comments
    collection do
      get ':login' => 'show' #it seems illogical to place this route under `stories` namespace 
                            #if you wanted to display stories of one particular user, you'd better make it `/users/:user_id/stories`
      get 'search'
  end
  root :to => 'stories#index' 
end

查看和指南。

您的表单定义应如下所示:

<%= form_for [@story, Comment.new] do |form| %> 
  <div id="body"> 
    <%= form.text_field :body %> 
  </div> <% form.hidden_field :user_id, :value => @current_user.login %> 
  <p>
    <%= submit_tag 'Comment' %>
  </p> 
<% end %>
Telling_tales::Application.routes.draw do 

  resource :session 
  resource :stories #really can't see why you need a singular route here 
  resource :user 
  resources :users do
    get 'register' => 'create', :on => :collection #maps to 'users#create'
  end

  resources :stories do 
    resources :comments
    collection do
      get ':login' => 'show' #it seems illogical to place this route under `stories` namespace 
                            #if you wanted to display stories of one particular user, you'd better make it `/users/:user_id/stories`
      get 'search'
  end
  root :to => 'stories#index' 
end

查看和指导。

我现在正在使用params[:story\u id],但没有帮助我现在正在使用params[:story\u id],但没有帮助我现在正在使用params[:story\u id]。没有关系difference@gleb-我们能看看这张表格吗。我想那个巴斯内克有什么想法。可能故事id从未在表单中传递。这是表单@current_user.login%>这是routes.rb讲述故事::Application.routes.draw do match'/'=>'故事索引'资源:故事匹配'故事/:login'=>'故事#显示'匹配'故事/:搜索'=>'故事#搜索'资源:会话资源:评论资源:故事资源:用户资源:用户匹配'users/:register'=>'用户#register'资源:故事执行资源:评论end@gleb通过编辑问题添加表单。注释不支持可读代码。=)我现在正在使用params[:story_id]。没有关系difference@gleb-我们能看看这张表格吗。我想那个巴斯内克有什么想法。可能故事id从未在表单中传递。这是表单@current_user.login%>这是routes.rb讲述故事::Application.routes.draw do match'/'=>'故事索引'资源:故事匹配'故事/:login'=>'故事#显示'匹配'故事/:搜索'=>'故事#搜索'资源:会话资源:评论资源:故事资源:用户资源:用户匹配'users/:register'=>'用户#register'资源:故事执行资源:评论end@gleb通过编辑问题添加表单。注释不支持可读代码。=)我有资源:故事做资源:评论结束我有资源:故事做资源:评论结束