2013-02-20 111 views
4

我有一個屬於用戶的項目。在我的用戶視圖中,我有一個鏈接來添加一個新項目,以及我想要添加項目的用戶的參數。渲染Ruby on Rails後保持參數

<%= link_to 'Add new project', :controller => "project", :action => "new", :id => @user %> 

Url: /projects/new?id=62 

將項目添加到用戶的工作。問題是當驗證失敗時添加一個新的項目,我做了一個渲染。

def create 

    @project = Project.new(params[:project]) 

    if @project.save 
     redirect_to :action => "show", :id => @project.id 
    else 
     render :action => "new" 
    end 

end 

觀點:

<%= form_for @project do |f| %> 

    <%= f.label :name %> 
    <%= f.text_field :name %> 

    <%= f.hidden_field :user_id , :value => params[:id] %> 

    <%= f.submit "Create project" %> 
<% end %> 

路線

resources :users do 
resources :projects 
end 

我如何才能讓參數爲用戶之後呈現?還是有更好的方法來做到這一點?一直在看很多類似的問題,但不能得到它的工作。

回答

1

嘗試

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

如果它不是爲你工作,然後嘗試另一種方式來傳遞參數給你的渲染作用。

這也可以幫助你 - > Rails 3 Render => New with Parameter

+0

不適用於我.. – 2015-07-17 12:44:11

+0

您正在使用哪種版本的導軌? – 2015-07-20 05:38:15

1

,則不應使用params[:id]價值分配給此表單域。相反,在控制器添加到您的#new行動:

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

,然後就寫在你的表格:

<%= f.hidden_field :user_id %> 

因爲@project#new#create行動被定義並且因爲它已經包含了項目實例的user_id分配給它,該值將自動添加到此字段。