在渲染Ruby on Rails后保留params

我有一个属于User的项目。 在我的用户视图中,我有一个链接来添加一个新项目,其中包含我想要添加项目的用户的参数。

 "project", :action => "new", :id => @user %> Url: /projects/new?id=62 

将项目添加到用户工作。 问题是在添加新项目时validation失败并且我进行了渲染。

 def create @project = Project.new(params[:project]) if @project.save redirect_to :action => "show", :id => @project.id else render :action => "new" end end 

视图:

     params[:id] %>   

路线

 resources :users do resources :projects end 

如何在渲染后为用户保留参数? 或者有更好的方法来做到这一点? 一直在看很多类似的问题,但无法让它发挥作用。

尝试

 render :action => "new", :id => @project.id 

如果它不适合你,那么尝试另外的方法将参数传递给你的渲染动作。

这也可以帮助你 – > Rails 3 Render => New with Parameter

您不应该使用params[:id]为此表单字段赋值。 相反,将其添加到控制器中的#new动作:

 def new @project = Project.new(user_id: params[:id]) end 

然后在表单中写下:

 <%= f.hidden_field :user_id %> 

因为@project是在#new#create操作中定义的,并且因为它已经包含分配了user_id的Project实例,所以该值将自动添加到该字段中。