2013-08-17 61 views
0
<% if current_user.blank? %> 
<%tripowner=User.find_by_id(@trip.userid).id%> 
<%=tripowner%> 
    <h3 class="text-center">Please sign up to provide recommendations.</h3> 
    <%= form_tag usersback_url, class: "form-signin", method: 'post' do %> 
    <h2 class="form-signin-heading">SIGN UP</h2> 
    <div> 
     <%= text_field_tag :first_name, nil, class: "input-block-level", placeholder: "First" %> 
    </div> 
    <div> 
     <%= text_field_tag :last_name, nil, class: "input-block-level", placeholder: "Last" %> 
    </div> 
    <div> 
     <%= email_field_tag :email, nil, class: "input-block-level", placeholder: "Email address" %> 
    </div> 
    <div> 
     <%= password_field_tag :password, nil, class: "input-block-level", placeholder: "Password" %> 
    </div> 
    <div> 
     <%= password_field_tag :password_confirmation, nil, class: "input-block-level", placeholder: "Confirm Password" %> 
    </div> 
     <%= hidden_field_tag :tripowner, value: tripowner %> 
    <div> 
     <%= submit_tag "SIGN UP", :class => 'btn btn-large btn-success' %> 
    </div> 
    <% end %> 

<%end%> 

:tripowner沒有正確通過參數,但返回零。我正在嘗試在此操作中使用它。我已經確認tripowner產量爲1.因此,我想@friendship.f2爲1.是否有一個原因爲什麼它返回零以下?爲什麼在通過參數傳遞值時會得到零?

def createback 

@user = User.new 
@user.first_name = params[:first_name] 
@user.last_name = params[:last_name] 
@user.email = params[:email] 
@user.password = params[:password] 
@user.password_confirmation = params[:password_confirmation] 

@friendship = Friend.new 
@friendship.f2 = params[:tripowner] 
if @user.save 

@friendship.f1 = @user.id 
@friendship.confirmed = true 
@friendship.save 

reset_session 
session[:user_id] = @user.id 

redirect_to :back, notice: "Signed up successfully." 

else 
    render 'new' 
end 

朋友模型

class Friend < ActiveRecord::Base 
belongs_to :user 
end 

PARAMS:參數:{ 「UTF8」=> 「✓」, 「authenticity_token」=> 「BkVY0/z0KeCQRg83wvumUKEmT67R4liMZr33u98mTBE =」, 「如first_name」 =>「rki」,「last_name」=>「rki」,「email」=>「test @ k」,「password」=>「[FILTERED]」,「password_confirmation」=>「[FILTERED]」, 「=>」{:value => 1}「,」commit「=>」註冊「}

正如您所看到的,1 i正確地通過三方。

+0

您應該通過用戶的* ID *,並在控制器重新找回它。也就是說,在視圖中進行數據庫查找通常是一個糟糕的主意 - 而不是傳遞它。 –

+0

變量tripowner返回id。在它的定義結尾註意.id。 – brad

+0

哦,對不起,錯過了 - 使用空白的一個理由,順便說一句。儘管如此,如果你有一個表單,這個值將在表單的參數下,而不是在根級上 - 你可以通過實際查看被髮送的參數來確定它的位置。如果它沒有被髮送,或者它沒有被髮送,那麼Manoj說你需要設定價值。 –

回答

0

您應該建立關聯,以便您可以通過關聯訪問旅程所有者,而不必爲其運行單獨的查詢。

@trip.user.id 

在這種情況下一趟應該屬於用戶,並且用戶應該有很多旅行...

Trip.rb # model 
    belongs_to :user 

    User.rb # model 
    has_many :trips 

有了這個地方,你可以通過訪問行程主人

假設你在@trip上行事,你甚至不需要通過任何隱藏字段來傳遞任何東西。否則,指定這樣的事情應該工作:

<%= hidden_field_tag :tripowner, @trip.user.id %> 

==更新

隨着您發佈的新代碼,您應該使用的form_for @user ...這將正確命名空間的形式與所有屬性用戶:{屬性}。有了這個地方,而不是單獨把你的模型屬性,你可以做這樣的事情在你的控制器動作:

@user = User.new(params[:user]) 

這也將是有益的,如果你深入到你的日誌,並粘貼params哈希表這就是被髮送到您的控制器行動。如果你在本地運行,它會在log/development.log中。

==第二次更新

首先檢查,以確保params哈希表被髮送到你的控制器看起來是正確的。如果是這樣,它可能是你的友誼模式的一個問題。

Google文檔hidden_​​field_tag: http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-hidden_field_tag

+0

謝謝davissp。我會嘗試的形式。出於好奇心,有沒有什麼辦法可以使用它,我現在擁有它? – brad

+0

當然。你可以張貼發送到你的控制器的參數哈希? – davissp14

+0

另外還有一個id喜歡看的是友誼模型。 – davissp14

0

試試這個:

<%= hidden_field_tag :tripowner, value: tripowner %> 

我認爲你應該使用tripowner_id而不是tripowner只是遵循Rails的約定,所以它可以是這樣的:

<%= hidden_field_tag :tripowner, value: User.find_by_id(@trip.userid).id %> 
+0

返回0而不是零,這似乎是朝着正確方向邁出的一步。 – brad

+0

您是否在您的視圖中檢查過可變「tripowner」的值? – manoj2411

+0

是的,它返回1這就是我正在尋找的 – brad

相關問題