0

Rails でヘルパーを使用してフォームを作成しようとしていますが、すべてのフィールドが作成されません。ビューに含めるヘルパーがあります (両方を含めます)。しかし、私はレールに慣れていないので、これを正しい方法で行っているかどうかさえわかりません。

このように書くと、最初はボタンが作成されてから動作するように見えますが、クリックすると値が渡されず、DB に空の行が作成されます (ID とタイムスタンプを除く)。

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>

だから私はフィールドを作成するために何かが欠けているかどうか考えていました..手がかりはありますか?

4

1 に答える 1

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 %>
于 2013-04-27T21:54:11.833 に答える