如果备注列中没有记录,则隐藏表头 - Rails

时间:2016-08-27 05:00:36

标签: ruby-on-rails

如果备注属性列中没有记录,如何使用方法隐藏表头(例如备注)?

index.html.erb:

<table>
    <% has_remark = collection_has_remark?(@aslani361s) %>
        <thead>
            <tr class="tr-head">
                    <td>Date</td>
                    <td>Description</td>
                    <td>Amount</td>
                    <td>Discount</td>
                    <td>Paid</td>
                    <td>Balance</td>
                    <td>DelnDel</td>
                    <% if has_remark %>
                    <td>Remark</td>
                    <% end %>
                    <td>Hide</td>
                </tr>
        </thead>
</table>

_aslani361.html.erb:

<% if aslani361.remark.present? -%>
    <td class="col-1"><%= aslani361.remark %></td>
<% end %>

aslani361s_helper.rb:

module Aslani361sHelper
    def collection_has_remark?(collection)
        collection.each do |aslani361|
            if aslani361.remark.present?
                return true
            end
        end
    end
end

screeshot.png

问题是我无法隐藏备注表标题,但我可以隐藏记录。

欢迎任何建议。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果collection_has_remark?,则true将返回aslani361.remark,如果没有collection,则each本身将返回def collection_has_remark?(collection) collection.each do |aslani361| if aslani361.remark.present? return true end end return false end 评估为条件的'truthy'值。

使用:

def collection_has_remark?(collection)
    collection.any?{|aslani361| aslani361.remark.present?}
end

或更好:

    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .build();
    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this, this)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build();

    SignInButton signInButton = (SignInButton) findViewById(R.id.sign_in_button);
    signInButton.setSize(SignInButton.SIZE_STANDARD);
    signInButton.setScopes(gso.getScopeArray());
}



@Override
public void onStart() {
    super.onStart();

    OptionalPendingResult<GoogleSignInResult> opr = Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient);
    if (opr.isDone()) {
        Log.d(TAG, "Got cached sign-in");
        GoogleSignInResult result = opr.get();
        handleSignInResult(result);
    } else {
        showProgressDialog();
        opr.setResultCallback(new ResultCallback<GoogleSignInResult>() {
            @Override
            public void onResult(GoogleSignInResult googleSignInResult) {
                hideProgressDialog();
                handleSignInResult(googleSignInResult);
            }
        });
    }
}


@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
    if (requestCode == RC_SIGN_IN) {
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        int statusCode = result.getStatus().getStatusCode();
        Log.d(statusCode+"oo", "joij");
        handleSignInResult(result);
    }
}

private void handleSignInResult(GoogleSignInResult result) {
    Log.d(TAG, "handleSignInResult:" + result.isSuccess());
    Log.d(result+"hello", "hii me prateek");
    if (result.isSuccess()) {
        GoogleSignInAccount acct = result.getSignInAccount();
        mStatusTextView.setText("done");
        updateUI(true);
    } else {
        mStatusTextView.setText("not done");
        // Signed out, show unauthenticated UI.
        updateUI(false);
    }
}
private void signIn() {
    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
    startActivityForResult(signInIntent, RC_SIGN_IN);
}

private void revokeAccess() {
    Auth.GoogleSignInApi.revokeAccess(mGoogleApiClient).setResultCallback(
            new ResultCallback<Status>() {
                @Override
                public void onResult(Status status) {
                    // [START_EXCLUDE]
                    updateUI(false);
                    // [END_EXCLUDE]
                }
            });
}