Ruby on rails 3 rails 3中的@story=story.find(params[:story_id])有问题
我有一个最近升级到rails 3的应用程序 在我的评论中,我有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
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通过编辑问题添加表单。注释不支持可读代码。=)我有资源:故事做资源:评论结束我有资源:故事做资源:评论结束