2013-04-27 203 views
0

我想创建一个带有助手的Rails窗体,但是并没有创建所有的字段。我有一个帮助者,包括我的观点(我将把他们包括在内)。但是因为我是新手,我甚至不确定我是以正确的方式做这件事。Ruby on Rails:表单不会创建hidden_​​field

当我这样写它时,它起初看起来像它的作品,因为按钮被创建,但是当我点击它时,没有值被传递,并且在DB中创建了空行(id和timestamp除外)。

users_helper.rb

module UsersHelper 

    def sub_button(u) 
     @current_user = User.find session[:user_id] 
     @temp_user = u 
     @sub = Subscription.where("userID = ? AND followingID = ?", @current_user.id, @temp_user.id) 
     if @sub.blank? 
      @following = false 
     else 
      @following = true 
     end 
     if(u.username != @current_user.username) 
      if @following 
       form_for(:subscription, :url => { :controller => "subscriptions", :action => "unsubscribe" }) do |s| 
        s.hidden_field(:userID, :value => @current_user.id) 
        s.hidden_field(:followingID, :value => u.id) 
        s.submit "Unfollow" 
       end 
      else 
       form_for(:subscription, :url => { :controller => "subscriptions", :action => "subscribe" }) do |s| 
        s.hidden_field(:userID, :value => @current_user.id) 
        s.hidden_field(:followingID, :value => u.id) 
        s.submit "Follow" 
       end 
      end 
     end 
    end 
end 

index.html.erb

<h2>All users</h2> 

<table> 
    <tr> 
     <th>Username</th> 
     <th>Email</th> 
    </tr> 

    <% @user.each do |u| %> 
     <tr> 
      <td><%= u.username %></td> 
      <td><%= u.email %></td> 
      <td><%= sub_button(u) %></td> 
     </tr> 
    <% end %> 
</table> 

所以我在想,如果我失去了一些东西,以创建领域..任何线索?

回答

2

我不知道,但我觉得这是它应该如何进行组织:

module UserHelper 
    def sub_button u 
    @current_user = User.find session[:user_id] 
    @temp_user = u 
    @sub = Subscription.where("userID = ? AND followingID = ?", @current_user.id, @temp_user.id) 
    if @sub.blank? 
     @following = false 
    else 
     @following = true 
    end 
    if(u.username != @current_user.username) 
     if @following 
      render partial: 'shared/unfollow', locals: { current_user: @current_user, u: u } 
     else 
      render partial: 'shared/follow', locals: { current_user: @current_user, u: u } 
     end 
    end 
end 

的意见/共享/ _unfollow.html.erb

<%= form_for(:subscription, url: { controller: "subscriptions", action: "unsubscribe" }) do |s| %> 
    <%= s.hidden_field(:userID, value: current_user.id) %> 
    <%= s.hidden_field(:followingID, value: u.id) %> 
    <%= s.submit "Unfollow" %> 
<% end %> 

的意见/共享/ _follow .html.erb

<%= form_for(:subscription, url: { controller: "subscriptions", action: "subscribe" }) do |s| %> 
    <%= s.hidden_field(:userID, :value => current_user.id) %> 
    <%= s.hidden_field(:followingID, :value => u.id) %> 
    <%= s.submit "Follow" %> 
<% end %> 
+0

谢谢。这可能是更好的组织方式!但我仍然有同样的问题.. hidden_​​fields不会创建,我只需通过单击按钮提交一个(几乎)空表单。 – Alexander 2013-04-27 22:36:38

+0

更改此:'<%s.hidden_​​field(:userID,:value => current_user。 (%ID)%> <%s.hidden_​​field(:followingID,:value => u.id)%>' to this:'<%= s.hidden_​​field(:userID,:value => current_user.id)% > <%= s.hidden_​​field(:followingID,:value => u.id)%>'现在它可以工作。感谢您的帮助! – Alexander 2013-04-27 22:39:17

+1

ohh我错过了,会编辑答案。 – Ghar 2013-04-28 00:23:25