2015-04-22 91 views
1

我有一個索引視圖,顯示了所有可用的類,我想要一個鏈接到「註冊類」,將我重定向到「註冊」表單並填充一些其他值而註冊在創建時可以節省我填補了再加上我只是通過鏈接傳遞給方法的類的外鍵的值在rails上通過link_to方法傳遞參數4

類指標:

<h1>Listof classes</h1> 

<table> 
    <thead> 
    <tr> 
     <th>id</th> 
     <th>Name</th> 
     <th>Description</th> 
     <th>Actions</th> 
    </tr> 
    </thead> 
    <tbody> 
    <% @classes.each do |class| %> 
     <tr> 
     <td><%= class.id %></td> 
     <td><%= class.name %></td> 
     <td><%= class.description %></td> 
     <td><%= link_to 'sign up!', new_sign_up_path(:class_id => class.id), method: :post %></td> 
     </tr> 
    <% end %> 
    </tbody> 
</table> 

sign_up控制器:

class SignUpsCOntroller < ApplicationController 
    before_action :set_sign_ups, only: [:show, :edit, :update, :destroy] 

    # GET /sign_ups/new 
    def new 
    @sign_up = SignUp.new 
    end 

    def set_sign_ups 
     @sign_up = SignUp.find(params[:id]) 
    end 

    def sign_up_params 
     params.require(:sign_up).permit(:date, :status, :type, :class_id) 
    end 
end 

和我的註冊量形式:

<%= form_for(@sign_up) do |f| %> 

    <div class="field"> 
    <%= f.label :date %><br> 
    <%= f.date_select :date %> 
    </div> 
    <div class="field"> 
    <%= f.label :status %><br> 
    <%= f.check_box :status %> 
    </div> 
    <div class="field"> 
    <%= f.label :type %><br> 
    <%= f.number_field :type %> 
    </div> 
    <div class="field"> 
    <%= f.hidden_field :class_id %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

當我保存它,它不保存的...類標識碼我已經試過解析成整型我已經試過了沒有隱藏字段,但它通過它作爲空白保存...任何想法?

+1

命名不是'class'其他變量的東西 - 那就是在Ruby中的保留字。 – deefour

+2

借調。如果你開始命名變量'class'和'type',你將會進入痛苦的世界。 – Shadwell

+0

他們實際上被稱爲不同,因爲我的代碼是西班牙語我改變它當我發佈的東西 – fr3d0

回答

2

您剛剛通過params[:class_id],並在link_to上附加了您的額外參數。但是您的形式是一個class_id屬性的對象,因此期待您的@sign_up對象有一個class_id屬性。

基本上你new動作,您需要設置@sign_upclass_id它從參數:

def new 
    @sign_up = SignUp.new 
    @sign_up.class_id = params[:class_id] if params.has_key?(:class_id) 
end 

這將class_id設置爲從link_to URL傳入的參數。

然後您的表單應該可以正常工作,因爲f.hidden_field將查看@sign_up上的當前值class_id並將其設置爲輸入的值。不要緊,你在這一點上還沒有保存 - form_for將使用未保存的狀態填充輸入。

+0

我現在甚至不確定'@ daw_inscripcion'來自哪裏。這個表單是否應該用於'@ sign_up'? – Shadwell

+0

是的是對不起,這只是我的代碼是西班牙文我改變它,當我發佈的東西對不起 – fr3d0

+0

德納達(你不會比我更害怕西班牙語,我很害怕!) – Shadwell